静态链表
单链表:各个结点在内存中是离散的
静态链表:分配一整片连续的内存空间,各个结点集中安置
#define Maxsize 10//静态链表的最大长度
struct Node{//静态链表结构类型的定义
ElemType data;//存储数据元素
int next;//(游标)下一个元素的数组下标
};
int main(){
struct Node a[MaxSize];
}
和顺序表差不多,不过是用游标确定下一个结点的地址
#define Maxsize 10//静态链表的最大长度
typedef struct Node{//静态链表结构类型的定义
ElemType data;//存储数据元素
int next;//(游标)下一个元素的数组下标
}SLinkList[MaxSize];
typedef struct Node SLinkList[MaxSize];
int main(){
SLinkList a;//a就是数组类型即SLinkList[MaxSize]
}
例:
#include<stdio.h>
#define MaxSize 10//静态链表的最大长度
typedef int ElemType;
struct Node{//静态链表结构类型的定义
ElemType data;//存储数据元素
int next;//(游标)下一个元素的数组下标
};
typedef struct{//静态链表结构类型的定义
ElemType data;//存储数据元素
int next;//(游标)下一个元素的数组下标
}SLinkList[MaxSize];
int main(){
struct Node x;
printf("size = %d\n",sizeof(x));
struct Node a[MaxSize];
printf("size = %d\n",sizeof(a));
SLinkList b;
printf("size = %d\n",sizeof(b));
}
结果:
插入位序为i的结点:
- 找到一个空的结点,存入数据元素
- 从头结点出发找到位序为i-1的结点
- 修改新节点的next
- 修改i-1号结点的next