栈
栈的概念
栈也是线性表的一种,但是栈只允许在固定的一端进行插入与删除数据,而进行插入与删除的一端同意称为栈顶,而另一端就称为栈底。简称:后进先出。
压栈(push):将数据插入栈顶。
出栈(pop):将栈顶的数据删除。
栈的实现
栈的存储与删除数据的形式是:后进先出。所以这就很符合顺序表的实现模式,可以快速的找到最后一个元素。如果用单链表的话就需要遍历显得比较复杂,但是将单链表的栈顶与栈底换一下也显得比较容易了。
需要实现的函数
队列
队列的概念
队列同样也是线性表的一种,队列就像食堂打饭一样,前面的打好饭先走,新来的同学站在后面排队。即:只允许在一端进行插入数据,而另一端进行删除数据。
入队列:进行插入操作的一端称为队尾。
出队列:进行删除操作的一端称为队头。
队列的实现
队列是在对头删除数据,队尾插入数据,如果再用线性表来实现的话就会发生挪动数据的现象,效率会降低,所以我们选择更简便的方法,单链表实现队列。但是既然是尾入头删的模式,所以我们为了避免每次插入数据是找尾,所以我们每次插入数据的时候都记录上尾的位置就显得更容易了。
实现前的基本操作
typedef struct QueueNode//每个节点所具备的结构(多个节点)
{
int val;
struct Node* next;
}QNode;
typedef struct Queue//(只有一个)可以避免使用二级指针
{
QNode* head;//记录节点头
QNode* tail;//记录节点尾
int size;//记录节点个数
}Que;