编写一个程序实现链队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能 80
编写一个程序实现链队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能:1)初始化并建立链队列2)入链队列3)出链队列4)遍历链队列#include<stdio....
编写一个程序实现链队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能:
1) 初始化并建立链队列
2) 入链队列
3) 出链队列
4) 遍历链队列
#include<stdio.h>
#include<stdlib.h>
#define elemtype int
typedef struct Qnode
{ elemtype data;
struct Qnode *next;
} Qnodetype;
typedef struct
{ Qnodetype *front;
Qnodetype *rear;
}lqueue;
void creat(lqueue *q)
{ Qnodetype *h;
int i,n,x;
printf("输入将建立的链队列元素的个数:n=");
scanf("%d",&n);
h=(Qnodetype*)malloc(sizeof(Qnodetype));
h->next=NULL;
q->front=h;
q->rear=h;
for(i=1;i<=n;i++)
{ printf("链队列第%d个元素的值为:",i);
scanf("%d",&x);
Lappend(q,x);
}
}
void Lappend(lqueue *q,int x)
{ Qnodetype *s;
s=(Qnodetype*)malloc(sizeof(Qnodetype));
s->data=x;
s->next=NULL;
q->rear->next=s;
q->rear=s;
}
elemtype ldelete(lqueue*q)
{ Qnodetype *p;
elemtype x;
if(q->front==q->rear)
{ printf("队列为空!\n");
x=0;
}
else
{ p=q->front->next;
q->front->next=p->next;
if(p->next==NULL)
q->rear=q->front;
x=p->data;
free(p);
}
return(x);
}
void display(lqueue *q)
{ Qnodetype *p;
p=q->front->next;
printf("\n链队列元素依次为:");
while (p!=NULL)
{ printf("%d-->",p->data);
p=p->next;
}
printf("\n\n遍历队列结束!\n");
}
main()
{ lqueue *p;
int x,cord;
printf("\n ***第一次操作请选择初始化并建立链队列!***") ;
do
{ printf("\n 链队列基本操作\n");
printf("\n===========\n") ;
printf(" 主菜单 \n");
printf("\n===========\n") ;
printf(" 1 初始化并建立队列\n ") ;
printf(" 2 入链队列 \n ") ;
printf(" 3 出链队列 \n ") ;
printf(" 4 遍历链队列 \n ") ;
printf(" 5 结束程序运行 \n ") ;
printf("============\n");
scanf("%d",&cord);
switch(cord)
{ case 1:
{ p=(lqueue*)malloc(sizeof(lqueue));
creat(p);
display(p);
}break;
case 2:
{ printf("请输入队列元素值:x=");
scanf("%d",&x);
Lappend(p,x);
display(p);
}break ;
case 3:
{ printf("出链队列元素值 x=%d\n",ldelete(p));
display(p);
}break ;
case 4:
{display(p);
}break ;
case 5:
{ exit(0);}
}
}while(cord<=5);
}
在第28行
就是{ printf("链队列第%d个元素的值为:",i);
scanf("%d",&x);
Lappend(q,x);
}
}
void Lappend(lqueue *q,int x)
{ Qnodetype *s;
s=(Qnodetype*)malloc(sizeof(Qnodetype));
中的
{ Qnodetype *s;
说这句与'Lappend'声明中的类型不匹配
用win-tc做的、求解 展开
1) 初始化并建立链队列
2) 入链队列
3) 出链队列
4) 遍历链队列
#include<stdio.h>
#include<stdlib.h>
#define elemtype int
typedef struct Qnode
{ elemtype data;
struct Qnode *next;
} Qnodetype;
typedef struct
{ Qnodetype *front;
Qnodetype *rear;
}lqueue;
void creat(lqueue *q)
{ Qnodetype *h;
int i,n,x;
printf("输入将建立的链队列元素的个数:n=");
scanf("%d",&n);
h=(Qnodetype*)malloc(sizeof(Qnodetype));
h->next=NULL;
q->front=h;
q->rear=h;
for(i=1;i<=n;i++)
{ printf("链队列第%d个元素的值为:",i);
scanf("%d",&x);
Lappend(q,x);
}
}
void Lappend(lqueue *q,int x)
{ Qnodetype *s;
s=(Qnodetype*)malloc(sizeof(Qnodetype));
s->data=x;
s->next=NULL;
q->rear->next=s;
q->rear=s;
}
elemtype ldelete(lqueue*q)
{ Qnodetype *p;
elemtype x;
if(q->front==q->rear)
{ printf("队列为空!\n");
x=0;
}
else
{ p=q->front->next;
q->front->next=p->next;
if(p->next==NULL)
q->rear=q->front;
x=p->data;
free(p);
}
return(x);
}
void display(lqueue *q)
{ Qnodetype *p;
p=q->front->next;
printf("\n链队列元素依次为:");
while (p!=NULL)
{ printf("%d-->",p->data);
p=p->next;
}
printf("\n\n遍历队列结束!\n");
}
main()
{ lqueue *p;
int x,cord;
printf("\n ***第一次操作请选择初始化并建立链队列!***") ;
do
{ printf("\n 链队列基本操作\n");
printf("\n===========\n") ;
printf(" 主菜单 \n");
printf("\n===========\n") ;
printf(" 1 初始化并建立队列\n ") ;
printf(" 2 入链队列 \n ") ;
printf(" 3 出链队列 \n ") ;
printf(" 4 遍历链队列 \n ") ;
printf(" 5 结束程序运行 \n ") ;
printf("============\n");
scanf("%d",&cord);
switch(cord)
{ case 1:
{ p=(lqueue*)malloc(sizeof(lqueue));
creat(p);
display(p);
}break;
case 2:
{ printf("请输入队列元素值:x=");
scanf("%d",&x);
Lappend(p,x);
display(p);
}break ;
case 3:
{ printf("出链队列元素值 x=%d\n",ldelete(p));
display(p);
}break ;
case 4:
{display(p);
}break ;
case 5:
{ exit(0);}
}
}while(cord<=5);
}
在第28行
就是{ printf("链队列第%d个元素的值为:",i);
scanf("%d",&x);
Lappend(q,x);
}
}
void Lappend(lqueue *q,int x)
{ Qnodetype *s;
s=(Qnodetype*)malloc(sizeof(Qnodetype));
中的
{ Qnodetype *s;
说这句与'Lappend'声明中的类型不匹配
用win-tc做的、求解 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询