c语言链队的基本 *** 作

c语言链队的基本 *** 作,第1张

该程序包含了链队的置空、判断是否为空、入栈、出栈和取栈顶元素几种基本 *** 作

#include 
#include  //malloc和free都需要这个系统库函数头文件; 
	typedef struct node//这里一定要有结构体变量名 
	{
		int data;
		struct node *next;     //此处是嵌套的作用,相当于新建了一个该结构体变量的子集,所以需要加上结构体类型名才能实现 ,顺序表则不需要; 
	 }queuenode;
	 queuenode *front;
	 queuenode *rear;
	 
	 void initqueue()   //队置空; 
	 {
	 	front=rear=NULL; 
	 }
	 
	 int queueempty()   //判断队是否为空; 
	 {
	 	return rear==NULL;
	 }  
	 
	 int enquere(int x)    //入队 
	 {
	 	queuenode *p;
	 	p=(queuenode *)malloc(sizeof(queuenode));
	 	if(p==NULL)
	 	{
	 		puts("申请存储空间失败");return 0; 
		 }
		 p->data=x;
		 p->next=NULL;
		 if(queueempty())
		 front=rear=p;
		 else
		 {
		 	rear->next=p;
		 	rear=p;
		 }
		 return 1; 
	 }
	 
	 int queuefront(int *y)     //取对头元素; 
	 {
	 	if(queueempty())
	 	{
	 		puts("队空");return 0;
		}
		else
		{
		*y=front->data;return 1;
		}
	 }
	 
	 int dequeue(int *z)    //出队 
	 {
	 	queuenode *q;
	 	if(queueempty())
	 	{
	 		puts("队空");return 0;
		 }
		 	q=front;
		 	*z=front->data;
		 	q->next=front;    //此处如果下一个没有元素的话,front自然就为空了; 
		 	if(rear==q)   //此处不能等于front,因为front已经指向了NULL; 如果不止一个元素,则rear不需要做任何 *** 作; 
			rear=NULL;   //如果最后一个元素出队了,那么rear就只能指向空了; 
			free(q);
			return 1; 
	 }
	 
	 void main()
	 {
	 	int x=3,y,z;
	 	initqueue();
	 	printf("是否为空:%d\n",queueempty());
	 	printf("入队是否成功:%d\n",enquere(x));
	 	printf("取队头元素是否成功:%d\n",queuefront(&y));
	 	printf("对头元素为:%d\n",y);
	 	printf("出队是否成功:%d\n",dequeue(&z));
	 	printf("出队元素为:%d\n",z);
	 }

各位兄弟,如果这篇文章对你有那么一点点的帮助的话,就给我一点鼓励点个赞吧,兄弟我在这里谢谢大家啦!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/567262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存