数据结构:链队列的基本操作,建立、插入、删除、遍历等(C语言)

您所在的位置:网站首页 队列的入队操作代码 数据结构:链队列的基本操作,建立、插入、删除、遍历等(C语言)

数据结构:链队列的基本操作,建立、插入、删除、遍历等(C语言)

2024-07-10 18:25| 来源: 网络整理| 查看: 265

链队列

在介绍链队列具体的操作前,先来看一下有关的知识点,我在看书之前也是懵懵懂懂,如果有不对的地方麻烦大佬指出

👆上图介绍了队列的几种变化,空队列时对头队尾指针都指向头指针,插入一个元素x时,队尾指针指向x,头指针也指向x。

大家体会体会

书上附带的插入算法与删除算法,大家可以结合上面的图一起理解。

对于几种函数的说明👇

下面给大家放代码(注释很多,方便大家理解):

//#include #include #include using namespace std; typedef struct QNode{//链式队列的结点结构 int data; //队列的数据元素类型 int struct QNode *next;//指向后继结点的指针 }QNode,*QueuePtr; typedef struct{//链式队列 QueuePtr front;//队头指针 QueuePtr rear;//队尾指针 }LinkQueue; int InitQueue(LinkQueue &Q){//构造一个空队列Q Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));//产生一个头结点 if(!Q.front) exit(0);//存储分配失败 Q.front->next=NULL; return 0; } //队尾插入↓ int EnQueue(LinkQueue &Q,int e){ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode));//为新结点申请空间 if(!p) exit(0); p->data=e;//将元素e存到新空间中 p->next=NULL; // 将新结点插到队尾 Q.rear->next=p; Q.rear=p; return 1; } //对头删除↓ int DeQueue(LinkQueue &Q,int e) { QueuePtr p; if(Q.front==Q.rear)return 0; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p); return 0; } //输入元素↓ int PrintQueue(LinkQueue &Q) { QueuePtr p; printf("链式队列中的元素"); if(Q.front->next!=NULL) { p=Q.front->next; do { printf("%5d",p->data); p=p->next; }while(p!=NULL); } else printf("队列为空\n"); printf("\n"); return 0; }//遍历链式队列 void main() { int n,e,i; LinkQueue Q; InitQueue(Q); printf("\n");printf("\n"); printf("初始化队列成功!"); printf("\n");printf("\n"); printf("请输入要进队的元素个数:\n"); scanf("%d",&n); for(i=1;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3