本节课介绍了单链表的操作实现细节,介绍了静态链表。
链表带头的作用:对链表进行操作时,可以对空表、非空表的情况以及 对首元结点进行统一处理,编程更方便。
下面给出带头的单链表实现思路:
按下标查找:
判断非法输入,当 1 < =i <= n 时,i 的值是合法的。
p = L -> next; j = 1;
while ( p && j < i ) { p = p ->next; ++j; }
return
按值查找:
p = L1 -> next;
while ( p && p ->data!=key) p = p -> next;
return;
插入:
判断
查找
创建
插入
删除:
查找
删除
释放内存
静态链表
对于线性链表,也可用一维数组来进行描述。这种描述方法便于在没有指针类型的高级程序设计语言中使用链表结构。
这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。
表示:
#define MAXSIZE 1000 / /链表的最大长度
typedef struct{
ElemType data;
int cur;
}component, SLinkList[MAXSIZE];
过程: