文章目录
- 算法基础入门
- 第二章 栈、队列、链表
- 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++; //队首出队 }