1.线性表
结构体成员:定长数组的指针,表长(注意与数组长度区分开) 初始化:利用malloc为数组申请内存空间,初始化表长为0 按位查找:设置一个指针参数返回值 按值查找:从头开始依次比较元素值 按位插入:插入位置元素整体后移,表长加1 按位删除:删除位置后面元素全部前移,表长减1
2.单链表
结构体成员:数据+指向下一个结点的结构体指针 初始化:利用malloc为头结点申请内存空间,初始化结点的next指针为NULL 按位查找:利用next指针向下遍历,同时设置一个计数器 按值查找:利用next指针向下遍历,同时比较结点的值 按位后插:令待插入结点指针域指向插入位置的后一个节点,修改插入位置前的节点指针域指向待插入结点 按位删除:遍历到达待删节点的前一个结点,保存待删结点的指针,令待删结点的前一个结点指针域指向待删结点的后一个结点,释放待删节点 前插法创建:保存头结点后一个结点的指针,修改头结点的指针为待插入结点的指针,修改待插入结点指针为最开始保存的头结点后一个结点的指针,逆序创建 后插法创建:维护一个尾指针(总是指向链表最后一个元素),修改尾结点的指针指向待插入结点,修改尾指针指向新的尾节点
3.查找
1.顺序查找:令表的首元素为待查找关键字,即哨兵,从后往前查找,不适合元素很多的表的查找 2.折半查找:要求为有序线性表,每一次比较中间关键字,选择左右 3.分块查找:为表分块,块间有序,块内无序,将每块的最大关键字和其地址保存为一个索引表 4.散列查找:address=Hash(key)
4.排序
1.直接插入:将记录划分为有序和无序两部分,初始时有序部分为首元素,每次从无序部分选择首元素插入到有序部分的合适位置,使其保存有序,直到无序部分没有元素 2.冒泡排序:相邻元素交换,把较大者向后交换,直到最后确定一个最大值在末尾,排除掉最后一个元素,再进行以上交换 3.快速排序:选择一个枢轴,比它小的交换到左边,比它大的交换到右边,然后左右两边分别再选择枢轴 4.简单选择排序:将记录划分为有序和无序两部分,初始时有序元素为0,从无序部分选择最小值加入到有序部分末尾
|