1. 程式人生 > >靜態鏈表的創建

靜態鏈表的創建

pri str 首地址 typedef 位置 ini real cat 初始化

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


}

靜態鏈表的創建