关于数据结构中循环队列的初始化问题
最近写了一个数据结构中关于队列的一些基本操作的程序,但是队列初始化那里老是要报错,调试了很久还是要报错,不知道是怎么回事,运行是能运行,但是运行到初始化队列那里好像就出现...
最近写了一个数据结构中关于队列的一些基本操作的程序,但是队列初始化那里老是要报错,调试了很久还是要报错,不知道是怎么回事,运行是能运行,但是运行到初始化队列那里好像就出现了内存方面的错误,请大家帮我看看,谢谢了,源程序如下:
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
typedef struct
{
int data[100];
int front , rear;
int num;
}duilie;
duilie *initduilie()
{
duilie *q=NULL;
q=(duilie *)malloc(sizeof(duilie));
q->front=q->rear=99;
q->num=0;
return q;
}
int enduilie(duilie *q,int x)
{
if(q->num==100)
{printf("栈满");return -1;}
else
{
q->rear=(q->rear+1)%100;
q->data[q->rear]=x;
q->num++;
return 1;
}
}
int outduitou(duilie *q)
{ int x;
if(q->num==0)
{
printf("对空");return -1;
}
else
{
q->front=(q->front+1)%100;
x=q->data[q->front];
q->num--;
return x;
}
}
void clearduilie(duilie *q)
{
while(q->num!=0)
{
q->front=(q->front+1)%100;
q->data[q->front]=0;
q->num--;
}
}
void main()
{ int a=0;
int flag=1;
duilie *q=NULL;
while(flag)
{
int i,j;
printf("请输入你想要执行的操作:\n");
printf("****** 1 构造一个空顺序循环队列 *****\n");
printf("****** 2 插入新元素到队列 *****\n");
printf("****** 3 删除及返回对头元素 *****\n");
printf("****** 4 清空队列 *****\n");
printf("****** 5 退出程序 *****\n");
scanf("%d",&i);
switch(i)
{
case 1: {q=initduilie();break;}
case 2: { printf("请输入你想要插入队列的元素:");
scanf("%d",&j);enduilie(q,j);break;
}
case 3: { j=outduitou(q);
printf("对头元素为:%3d",j);break;
}
case 4: clearduilie(q);break;
case 5: {printf("程序退出:");exit(0);}
}
printf("是否继续操作?是请输入1,否请输入2:");
scanf("%c",&a);
if(a==1)flag=1;
else flag=0;
}
} 展开
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
typedef struct
{
int data[100];
int front , rear;
int num;
}duilie;
duilie *initduilie()
{
duilie *q=NULL;
q=(duilie *)malloc(sizeof(duilie));
q->front=q->rear=99;
q->num=0;
return q;
}
int enduilie(duilie *q,int x)
{
if(q->num==100)
{printf("栈满");return -1;}
else
{
q->rear=(q->rear+1)%100;
q->data[q->rear]=x;
q->num++;
return 1;
}
}
int outduitou(duilie *q)
{ int x;
if(q->num==0)
{
printf("对空");return -1;
}
else
{
q->front=(q->front+1)%100;
x=q->data[q->front];
q->num--;
return x;
}
}
void clearduilie(duilie *q)
{
while(q->num!=0)
{
q->front=(q->front+1)%100;
q->data[q->front]=0;
q->num--;
}
}
void main()
{ int a=0;
int flag=1;
duilie *q=NULL;
while(flag)
{
int i,j;
printf("请输入你想要执行的操作:\n");
printf("****** 1 构造一个空顺序循环队列 *****\n");
printf("****** 2 插入新元素到队列 *****\n");
printf("****** 3 删除及返回对头元素 *****\n");
printf("****** 4 清空队列 *****\n");
printf("****** 5 退出程序 *****\n");
scanf("%d",&i);
switch(i)
{
case 1: {q=initduilie();break;}
case 2: { printf("请输入你想要插入队列的元素:");
scanf("%d",&j);enduilie(q,j);break;
}
case 3: { j=outduitou(q);
printf("对头元素为:%3d",j);break;
}
case 4: clearduilie(q);break;
case 5: {printf("程序退出:");exit(0);}
}
printf("是否继续操作?是请输入1,否请输入2:");
scanf("%c",&a);
if(a==1)flag=1;
else flag=0;
}
} 展开
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询