c语言建立一个静态链表,【数据结构】静态链表的实现(C语言描述)

#include

#include "stdlib.h"

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define MAXSIZE 1000 // 定义线性表最大容量

typedef int Status;

typedef int ElemType;

// 定义静态链表的存储结构

typedef struct

{

ElemType data; // 数据域

int curr; // 存放下一个节点在数组中的下标

} Node;

// 定义StaticLinkList

typedef Node StaticLinkList[MAXSIZE] ;

// 先初始化一个备用的静态表(其实是数组)

// L[0].curr = 1,L[1].curr = 2,L[2].curr = 3 ...

Status InitList(StaticLinkList L){

for(int i=0; i< MAXSIZE; i++){

L[i].curr = i+1;

}

// 当前静态链表为空表,最后一个元素所指向的下一个元素的下标为0(也就是指向一个元素)

L[MAXSIZE-1].curr = 0;

return OK;

}

// 获取空闲元素的下标 并将下标存放在L[0].curr 中

int GetBlankIndex(StaticLinkList L){

// L[0].curr 始终存的是空闲元素的下标

int blankIndex = L[0].curr;

if (L[0].curr) L[0].curr = L[blankIndex].curr;

return blankIndex;

}

Status ListInsert(StaticLinkList L,ElemType e){

int blankIndex = GetBlankIndex(L);

L[blankIndex].data = e;

return OK;

}

// 删除第i个元素

Status ListDelete(StaticLinkList L,int i){

return OK;

}

void Visit(StaticLinkList L){

int blankIndex = GetBlankIndex(L);

for (int i = 1; i < blankIndex; ++i) {

printf("%d ",L[i].data);

}

printf("\n");

}

int main() {

StaticLinkList L;

InitList(L);

for(int i=1; i<=5; i++){

ListInsert(L,i);

}

Visit(L);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值