加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 安全 > 正文

【数据结构】静态链表的实现(C语言描述)

发布时间:2021-04-03 07:15:39 所属栏目:安全 来源:网络整理
导读:#include stdio.h#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; // 数据域

#include <stdio.h>
#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);



}

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读