链表是由一系列节点组成,每个节点包含两个域,一个是数据域,用来保存用户数据。一个是指针域,保存下一个节点的地址。链表在内存中是非连续的。
例:(单向链表)
优点:链表在指定位置插入和删除数据不需要移动元素,只需要修改指针即可。(相对于数组)
缺点:相对于数组,多了指针空间开销查找效率低一些
链表分类
静态链表
动态链表
单向链表
双向链表
循环链表
单向循环链表
双向循环量表
#include <stdio.h>
//初始化链表
struct tt{ //定义一个结构体
int x;
struct tt *y; //用来将实现链表
}*p; //同上
//循环链表
struct tt a[4]={
20,a+1,15,a+2,30,a+3,17,a
}; //结构体内各元素含义
int main()
{
int i;
p=a;
for(i=1;i<=4;i++){
printf("%d ",p->x);//输出显示结构体元素(遍历)
p=p->y;//实现链表向后循环
}
return 0;
}
//输出显示:20 15 30 17
动态创建一个链表:动态内存申请+模块化设计
1.创建链表(创建一个表头表示整个链表)
2.创建节点
3.插入节点
4.删除节点
5.打印遍历链表(测试);