静态链表是早期实现链表的数组形式链表,主要是向内存申请一段连续的空间,建立一个固定长度的结构体数组。利用游标next来找到下一元素在数组的位置状况。详细原理看下图!
代码以下:ios
#include <iostream> #include <stdio.h> #include <stdlib.h> #define MaxSize 10//定义结构体数组的最大长度 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ //定义静态链表 /* typedef struct { int data;//数据 int next;//指向数组下标的下一个位置 }SLinkList[MaxSize]; */ //定义静态链表 struct Node{ int data;//数据 int next;//指向数组下标的下一个位置 }; typedef struct Node SLinkList; //建立静态链表 void InitSList(SLinkList *L){ for(int i=0;i<MaxSize;i++){ L[i].data = -1; L[i].next = -2; } } //输出静态链表 void p(SLinkList *L){ for(int i=0;i<MaxSize;i++){ printf("%d\t",L[i].data); } } int main(int argc, char** argv) { SLinkList L[MaxSize];//表示最大长度为MaxSize的结构体数组 /* for(int i=0;i<MaxSize;i++){ L[i].data = -1; L[i].next = -2; } */ printf("Size=%d\n",sizeof(L)); InitSList(L); p(L); return 0; }