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


















