1.3 静态链表

静态链表类似于并查集,静态链表不具有分支结构。

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50

// 在一些不支持指针的高级语言中,使用静态链表构建单链表是一种非常巧妙的方法。
// 静态链表以-1作为结束标志。静态链表的修改只需要移动指针,不需要移动数据。静态链表同样是从数组下标0开始存储元素。
typedef struct node{
    int data;
    int next;          // 静态链表以整形数据存储数组下标
}SLinkList[MaxSize];

void TraverseL(struct node *L){
    int i=0;
    while(i!=-1){
        printf("%d\n",L[i].data);
        i=L[i].next;
    }
}

int main(){
    SLinkList L;       // 数组名,本来就是地址
    L[0].data=1;  L[0].next=3;
    L[1].data=4;  L[1].next=1;
    L[2].data=9;  L[2].next=4;
    L[3].data=3;  L[3].next=2;
    L[4].data=8;  L[4].next=-1;   // 静态链表以-1作为结束标志
    TraverseL(L);

    return 0;
}

 

posted @ 2019-05-03 20:15  aascn  阅读(159)  评论(0编辑  收藏  举报