静态链表的创建

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);


}

 

posted on 2017-09-21 16:09  paulversion  阅读(1265)  评论(0编辑  收藏  举报