typeDefine.h 头文件
#define MAXSIZE 100
typedef struct {
int data; int cur;}component,SLinkList[MAXSIZE];//SLinkList类型为1000长度的数组
//初始化静态链表void InitSpace_SL(SLinkList S);//在静态链表中查找元素int LocateElem_SL(SLinkList S, int e);//输出静态链表中的所有的元素void outPutElem_SL(SLinkList S);//向静态链表中的第i元素插入元素void InserrElem_SL(SLinkList S,int i);//在静态链表中插入元素void DelElem_SL(SLinkList S, int i);
realize.c
#include "stdio.h"
#include "stdlib.h"#include "typeDefine.h"//初始化静态链表
void InitSpace_SL(SLinkList S) { int i = 0; for (i ;i < 10; i++) { S[i].cur = i + 1;//i等于0时为头结点, S[i].data = i; } S[i].data = i; S[i].cur = 0;//cur为零时为链表的结尾}//在静态线性表中查找第一个值为e的元素
int LocateElem_SL(SLinkList S, int e) { int i = S[0].cur; while (i&&e!=S[i].data) { i = S[i].cur;}
return i;}//输出所有元素
void outPutElem_SL(SLinkList S) { int i = S[0].cur;while (i)
{ printf("元素的值为%d\n",S[i].data); i = S[i].cur;}
}
//在第i个位置插入元素void InserrElem_SL(SLinkList S, int i) { int j = 0; int k = 0; while (j<i-1) { k=S[k].cur; j++; } S[k].cur = 11; S[11].cur = k + 1; S[11].data = 11;}//删除第i个位置的元素
void DelElem_SL(SLinkList S,int i) {int j = 0;
int k = 0; while (j<i - 1) { k = S[k].cur; j++; } //删除元素并没有释放数组的空间(需要释放空间) S[k].cur = S[S[k].cur].cur;}
staticLinkList.c
#include "stdio.h"
#include "stdlib.h"#include "typeDefine.h" void main() {SLinkList L;//int L[100]的数组 L为数组的首地址
//初始化静态链表 InitSpace_SL(L); //在指定位置插入元素 InserrElem_SL(L,2); //删除指定位置的元素 DelElem_SL(L,2); //输出链表中所有元素 outPutElem_SL(L); }