文章目录
-
- 算法基础入门
-
- 第二章 栈、队列、链表
-
- 2.1 队列
- 2.2 栈
- 2.3 纸牌游戏
- 2.4 链表
-
- 如何建立链表?
-
- 1.我们需要一个头指针(head)指向链表的初始。链表还没建立时头指针head为空
- 2.建立第一个结点
- 3.设置刚创建的这个结点的数据域(左半)和指针域(右半)
- 4.设置头指针,头指针可方便对链表从头到尾遍历
- 5.指针q也指向当前结点
算法基础入门
第二章 栈、队列、链表
2.1 队列
队列是一种特殊的线性结构,它只许在队列的首部进行删除操作,称为‘出队’,在队列的尾部进行插入操作,称为‘入队’。队列无元素时,称为‘空队列’。队列遵循‘先进先出’原则。
例:head和tail两个整型变量分别用来记录队列的队首和队列的尾部的下一个位置
在队首删除一个数的操作就是head++;
对队尾增加一个数的操作就是q[tail]=x;tail++;
#include <stdio.h>
struct queue
{
int data[100]; //队列主体,存储内容
int head; //队首
int tail; //队尾
};
int main()
{
struct queue q;
q.head = 1;
q.tail = 1;
int i;
for(i = 0; i < 10; i++)
{
scanf("%d",&q.data[q.tail]); //插入数据
q.tail++;
}
while(q.head < q.tail) //不为空时执行该循环体
{
printf("%d ",q.data[q.head]);//打印队首并将队首出队
q.head++;
q.data[q.tail] = q.data[q.head];//新的队首的数添加到队尾
q.tail++;
q.head++; //队首出队
}