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
",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);
}