线性表

线性表

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.插入

要修改四个指针

image-20220814101920631

2.删除

后一节点的地址在前一节点上存着

delete p;
posted @ 2022-08-15 09:34  Colin_Cora  阅读(29)  评论(0)    收藏  举报