1,我们研究数据结构的操作,第一要弄懂它的结构体表示(也就是结构体特点)、第二要清楚它的初始化和撤销过程。对于静态链表首先分析它的特点:一是采用静态存储方式,二是没有指针。静态链表就是不用指针来表示链式关系的一种巧妙实现。 2,静态链表的结构体定义 1 #define MAX 100 2 3 typedef struct 4 { 5 int data; //数据域的类型可以是任意的基类型,包括数组 6 int cur; 7 }component, slinklist[MAX] 3,静态链表的初始化示意图 4,静态链表的操作集合,与单链表一致,均在头文件defs.h中。此头文件在前面文章中已经写出。 5,初始化操作的实现
InitList.c
6,静态链表撤销操作的实现,原理就是将链表从第一个元素至最后一个元素插入到备用链表第一个元素前
DestroyList.c
7,静态链表清空操作和撤销操作是一致的。
ListEmpty.c
9,求链表长度操作.
ListLength.c
10,取元素操作.
GetElem.c
11,查找元素操作实现.
LocateElem.c
12,求前驱操作实现.
PriorElem.c
13,求后继操作的实现
NextElem.c
14,Malloc函数实现 1 //因为没有指针,没有动态分配函数,所以要自己实现 2 3 #include"defs.h" 4 5 int Malloc(slinklist L) //释放备用链表第一个结点 6 { 7 int i = L[0].cur; 8 if (i == 0) //备用链表为空,无法分配,退出 9 exit(0); 10 L[0].cur = L[i].cur; //备用链表头结点,指向备用链表第二个结点 11 return i; 12 } 15,Free函数实现 1 #include"defs.h" 2 3 void Free(slinklist L, int k) //将位置为k的空闲结点释放 4 { //即插入到备用链表第一个结点前 5 L[k].cur = L[0].cur; 6 L[0].cur = k; 7 } 8 9 //Malloc、Free均是对备用链表的操作 16,静态链表插入操作实现
ListInsert.c
17,静态链表删除操作的实现
ListDelete.c
18,遍历静态链表操作实现
TravelList.c
|
|