链队的练习

编程入门 行业动态 更新时间:2024-10-12 03:27:57

链队的练习

链队的练习

链队的练习

相关内容:队列的链式存储结构(链队)

//链队的初始化、入队、出队、取对头
#include<stdio.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
//结点结构
typedef struct QNode{	int data;		//结点数据域struct QNode *next;	//结点指针域
}QNode,*QueuePtr;	//指向队中结点的指针QueuePtr
//链队结构
typedef struct{		QueuePtr front;	//队头指针,指向队列头结点QueuePtr rear;	//队尾指针,指向队列尾结点
}LinkQueue; //链队指针
//初始化:新建头结点、将队头和队尾指针指向头结点
Status InitLinkQueue(LinkQueue *LQ){QueuePtr p;//新建头结点p=(QNode*)malloc(sizeof(QNode));p->next=NULL;//头结点指针域置空LQ->front=LQ->rear=p;//队头和队尾指针指向头结点return OK;
}
//入队限定在队尾操作
Status EnLinkQueue(LinkQueue *LQ,int e){QueuePtr s;//新建结点s=(QNode*)malloc(sizeof(QNode));s->data=e;s->next=NULL;//尾插操作LQ->rear->next=s;//原队尾结点指向新结点LQ->rear=s;//后移队尾指针,将新结点作为新队尾return OK;
}
//出队限定在队头操作
Status DeLinkQueue(LinkQueue *LQ,int *e){if (LQ->front==LQ->rear)//判空return ERROR;QueuePtr p;//指向队中结点的指针p//LQ->front指向头结点,LQ->front->next指向首元结点p=LQ->front->next;//让p指向首元结点*e=p->data;//取出队头元素LQ->front->next=p->next;//头结点的指针域指向待删结点的下一个结点if (LQ->rear==p)//如果待删首元结点p为最后一个结点LQ->rear=LQ->front;//恢复初始状态free(p);//删除首元结点return OK;
}
int GetHead(LinkQueue *LQ){if (LQ->front != LQ->rear)return LQ->front->next->data;//首元结点数据return ERROR;
}
int main(){int n,e;LinkQueue LQ;InitLinkQueue(&LQ);printf("Init Completed!\n");printf("输入入队元素个数:");scanf("%d",&n);for (size_t i = 0; i < n; i++){printf("输入第%d个入队元素:",i+1);scanf("%d",&e);EnLinkQueue(&LQ,e);}printf("队头元素:%d\n",GetHead(&LQ));for (size_t i = 0; i < n; i++){printf("输出第%d个出队元素:",i+1);DeLinkQueue(&LQ,&e);printf("%d\n",e);}return 0;
}

更多推荐

链队的练习

本文发布于:2023-11-16 12:32:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1621645.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!