线性表
定义:线性表是零个或多个具有相同类型的数据元素的有限序列
就像一个数组一样一个数组只能存储一种数据类型
顺序存储结构:
在内存中开辟一块连续的内存空间,把线性表的数据元素依次连续存储进这片内存空间。
A.优点:适用于查询,适用于遍历。
B.缺点:不适用于插入,以及删除,
由于是一片连续的内存空间除法你删最后一个数据元素,否则都会引起数据的移动,从而消耗大量时间。
他需要提前分配空间,如果分配小了内存上溢,分配大了内存浪费。
链式存储结构:
特点:只需要一片内存空间,连续与否都无所谓,这就表明链式存储结构可以使用那些无人使用且剩余的空间。他需要存储 的不只是自己的数据,还要存储他下一个节点的内存地址。
A.优点:适用于插入,以及删除
B.缺点:存储密度小
总结:
如果这个表总是进行查询,那么使用顺序存储结构比较好。
如果这个表总是进行插入删除,那么使用链式存储结构比较好。
头指针:
1.头指针是指链表指向第一个节点的指针,如果他有头结点那头指针就是指向头结点的指针;
2.头指针有标识作用,一般会用头指针来命名该链表
3.链表为空头指针也不能为空,头指针是链表的必要元素
头结点:
1.放在第一个元素节点之前,他存的东西无意义不过可以存链表长度;
2.头结点不一定是链表的必要元素
单链表的插入:
p是当前的链表内容,s是将要插入的元素
s->next= p->next; p->next= s
单链表的删除:
p是当前的链表内容,q是将要删除的元素
p->next=q; p->next=q->next
单链表的整表删除:
声明q和p;把第一个节点的值赋给p;循环:1,把下一个节点赋值给q 2,释放p 3,把q赋值给p;
循环链表:
可以把链表的终端节点的next指向头结点。完成循环;
栈和队列
栈:
仅限定在表尾进行插入删除操作的表;后进先出;
允许进行插入删除的一端叫做栈顶,另一端叫栈底;
不包含任何内容的叫空栈;LIFO结构(Last In First Out)后进先出;
栈的插入:
叫做压栈,入栈;
栈的删除:
叫做弹栈;
队列:
队列是只能在一端进行插入,另一端进行删除的线性表;先进后出;