#include "stdio.h"
#include "malloc.h"
typedef int DataType;
typedef struct node
{
DataType data;
struct node *next;
}linklistq;
typedef struct
{
linklistq *rear,*front;
}linkqueue;
linkqueue *Initqueue()
{
linklistq *p = (linklistq *)malloc(sizeof(linklistq));
linkqueue *q = (linkqueue *)malloc(sizeof(linkqueue));
q->front = p;
q->rear = p;
return q;
}
int emptyqueue(linkqueue *q)
{
if(q->rear = q->front){return 1;}
else{return 0;}
}
int inqueue (linkqueue *q,DataType x)
{
linklistq *p = (linklistq *)malloc(sizeof(linklistq));
p->data = x;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
int dequeue(linkqueue *q,DataType *x)
{
linklistq *p;
if(emptyqueue(q))
{
printf("队空,不能出队\n");
return 0;
}
else
{
p = q->front->next;
*x = p->data;
q->front->next = p->next;
if(p->next == NULL)
{
q->rear = q->front;
}
free(p);
return 1;
}
}
void showqueue(linkqueue *q)
{
linklistq *p = q->front->next;//有头指针
if(p == NULL)
{
printf("队列为空");
}
else
{
printf("队列中的元素依次为:");
while(p != NULL)
{
printf("%5d",p->data);
p = p->next;
}
}
}
int menuqueue()
{ int n;
printf("\n 队列子系统");
printf("\n==========================================");
printf("\n | 1-初始化队列 |");
printf("\n | 2-入队操作 |");
printf("\n | 3-出队操作 |");
printf("\n | 4-遍历操作 |");
printf("\n | 0-退出 |");
do
{ printf("\n\t\t please number 0---4 select:");
scanf("%d",&n);
} while((n<0)||(n>4));
return n;
}
int main()
{
DataType x;
linkqueue *q;
int i,n,flag;
int kk;
do
{
kk = menuqueue();
switch(kk)
{
case 1:
q = Initqueue();
printf("队列的初始化完成!");
break;
case 2:
printf("请输入要入队的元素个数:");
scanf("%d",&n);
printf("请输入%d个整数进行入队:",n);
for(i = 0;i<n;i++){
scanf("%d",&x);
inqueue(q,x);
}
printf("入队操作完成!");
break;
case 3:
printf("请输入要出队的元素个数:");
scanf("%d",&n);
printf("出队的元素顺序依次为:");
for(i = 0;i<n;i++);
{
flag = dequeue(q,&x);
printf("%5d",x);
}
if(flag == 1){printf("出队成功!");}
else
{
printf("出队失败!");
}
break;
case 4:
showqueue(q);
break;
case 0:
printf("退出");
break;
}
}while(kk != 0);
}
单循环链表表示队列,出队操作会出错
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 梦里逆天 2022-10-09 22:41关注
#include "stdio.h" #include "malloc.h" typedef int DataType; typedef struct node { DataType data; struct node *next; }linklistq; typedef struct { linklistq *rear,*front; }linkqueue; linkqueue *Initqueue() { linklistq *p = (linklistq *)malloc(sizeof(linklistq)); linkqueue *q = (linkqueue *)malloc(sizeof(linkqueue)); q->front = p; q->rear = p; return q; } int emptyqueue(linkqueue *q) { if(q->rear == q->front){return 1;} else{return 0;} } int inqueue (linkqueue *q,DataType x) { linklistq *p = (linklistq *)malloc(sizeof(linklistq)); p->data = x; p->next = NULL; q->rear->next = p; q->rear = p; } int dequeue(linkqueue *q, int n) { linklistq *p; if(emptyqueue(q)) { printf("队空,不能出队\n"); return 0; } else { int count = 0; printf("出队的元素顺序依次为:"); while (count < n) { p = q->front->next; if (p != NULL) { printf("%5d",p->data); count++; } q->front->next = p->next; if(p->next == NULL) { q->rear = q->front; } } free(p); return 1; } } void showqueue(linkqueue *q) { linklistq *p = q->front->next;//有头指针 if(p == NULL) { printf("队列为空"); } else { printf("队列中的元素依次为:"); while(p != NULL) { printf("%5d",p->data); p = p->next; } } } int menuqueue() { int n; printf("\n 队列子系统"); printf("\n=========================================="); printf("\n | 1-初始化队列 |"); printf("\n | 2-入队操作 |"); printf("\n | 3-出队操作 |"); printf("\n | 4-遍历操作 |"); printf("\n | 0-退出 |"); do { printf("\n\t\t please number 0---4 select:"); scanf("%d",&n); } while((n<0)||(n>4)); return n; } int main() { DataType x; linkqueue *q; int i,n,flag; int kk; do { kk = menuqueue(); switch(kk) { case 1: q = Initqueue(); printf("队列的初始化完成!"); break; case 2: printf("请输入要入队的元素个数:"); scanf("%d",&n); printf("请输入%d个整数进行入队:",n); for(i = 0;i<n;i++){ scanf("%d",&x); inqueue(q,x); } printf("入队操作完成!"); break; case 3: printf("请输入要出队的元素个数:"); scanf("%d",&n); flag = dequeue(q, n); // printf("出队的元素顺序依次为:"); // for(i = 0;i<n;i++); // { // flag = dequeue(q); // printf("%5d",x); // } if(flag == 1){printf("出队成功!");} else { printf("出队失败!"); } break; case 4: showqueue(q); break; case 0: printf("退出"); break; } }while(kk != 0); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效