线性表
线性表
1.顺序表
顺序表是顺序存储方式,即逻辑上相邻的数据在计算机内的存储位置也是相邻的。顺序存储方式,元素存储是连续的,中间不允许有空,可以快速定位第几个元素,所以插入、删除时需要移动大量元素。
2.链表
链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,那么怎么表示逻辑上的相邻关系呢?(指针)
链表的定义
typedef struct Lnode{
ElemType data;//元素类型需要什么类型就写什么类型
struct Lnode *next;//指向下一个结点的指针
}Lnode,*Linklist;//用typedef将结构体等价于类型名Lnode,指针Linklist
3.单链表的基本操作
~初始化 创建空表
~创建 头插法 尾插法
~取值 第几个元素取出来呀
~查找 一个一个找从头节点开始
~插入 最难掌握
~删除 最难掌握
1.初始化
头指针的data域不存数据,next域指向空(NULL)
Linklist L; L=new Lnode;//从工程角度看,我们每次分配一个这样的空间都要看是否能分配成功 l->next=NULL; //判断 if (!L) return false; return true;
2.创建
1.头插法(逆序建表)
每次都把一个新的节点插入头节点的后面

1.s->next=L-next;是把L的地址给了S的指针域
2.有标记的一段后修改,没有标记的一段先修改
2.尾插法(正序建表)

链表的头指针不可以随意改动
3.插入
单链表只能向后操作不可以向前操作

4.删除(跳过节点)

delete q;//释放空间
4.双向链表
在单向链表的基础上增加了一个域

1.插入
要修改四个指针
2.删除
后一节点的地址在前一节点上存着
delete p;
本文来自博客园,作者:Colin_Cora,转载请注明原文链接:https://www.cnblogs.com/Colincora/p/16587136.html

浙公网安备 33010602011771号