本文主要是介绍链队列的进队和出队算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
//#define len sizeof(qnode)
typedef struct qnode
{ int data;struct qnode *link;
}qnode;
typedef struct
{qnode *front;qnode *rear;
}qlink;int initialqlink(qlink *q) //初始化一个队列
{q->front=q->rear=(qnode*)malloc(sizeof(qnode));if(!q->front)exit(-2);q->rear->link=NULL;return 1;
}int insert(qlink *q,int item)
{//front和rear分别指向队头元素和队尾元素所在的链接点qnode *p;p=(qnode*)malloc(sizeof(qnode));//if(!p) //如果申请失败// return 0;p->data=item; //将item送入新结点的数据域p->link=NULL; //新结点的指针域置空q->rear->link=p;q->rear=p;return 1;
}
int delet(qlink *q)
{qnode *p; int i;printf("\n the number of out queue:");scanf("%d",&i); //出队有多少个while(i){p=q->front;q->front=q->front->link;free(p);i--;}p=NULL; //NULL必须为大写return 1;
}
int show(qlink q)
{qnode *p;p=q.front->link;printf("the queue is:");while(!p){printf("%d\t",p->data);p=p->link;}return 1;
}void main()
{int i=1;qlink queue;//queue=(qnode)malloc(sizeof(qnode));initialqlink(&queue);int item;printf("input:");do{scanf("%d",&item);insert(&queue,item);}while(item);printf("\n");show(queue);delet(&queue);show(queue);printf("\n");
}
这篇关于链队列的进队和出队算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!