C语言链队销毁问题(求求帮帮孩子)
那位大佬知道啊!我调试一直不行,那位好心得大佬帮帮忙啊!我实在是不行了,孩子求求了。出问题的代码
出问题的代码:
Status DestroyQueue(LinkQueue Q) //从队头结点依次销毁
{
while (Q.front)
{
Q.rear = Q.front->next;
free(Q.front);
Q.front = Q.rear;
}
return OK;
}
运行后如下:
全部源码:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define FALSE 0
typedef int ElemType;
typedef int Status;
typedef struct QNode
{
ElemType data;
struct QNode* next;
}QNode, *Queueptr;
typedef struct
{
Queueptr front; //队头指针
Queueptr rear; //队尾指针
}LinkQueue;
Status InitQueue(LinkQueue* Q); //初始化
Status InsertQueue(LinkQueue* Q, ElemType e); //入队
Status DeletQueue(LinkQueue* Q, ElemType* e); //出队
Status GetHead(LinkQueue Q); //取头结点元素
Status DestroyQueue(LinkQueue Q); //销毁
int main()
{
LinkQueue Q;
ElemType e, a;
int n;
if (InitQueue(&Q) == 1)
printf("构建链队成功!\n");
printf("入队元素个数:");
scanf("%d", &n);
printf("请输入入队元素:");
for (int i = 0; i < n; i++)
{
scanf("%d", &e);
InsertQueue(&Q, e);
}
printf("入队成功!\n");
a=GetHead(Q);
if (a != 0)
printf("队头元素为:%d\n", a);
else
printf("队空!无头元素!\n");
if (DeletQueue(&Q, &e) == 0)
printf("队为空!无法出队!\n");
else
printf("出队元素为:%d\n", e);
DestroyQueue(Q);
printf("销毁完毕!");
return 0;
}
Status InitQueue(LinkQueue* Q)
{
Q->front = Q->rear = (Queueptr)malloc(sizeof(QNode));
if (!Q->front)
exit(0);
Q->front->next = NULL;
return OK;
}
Status InsertQueue(LinkQueue* Q, ElemType e)
{
Queueptr P;
P = (Queueptr)malloc(sizeof(QNode));
if (!P)
exit(0);
P->data = e;
Q->rear->next = P;
Q->rear = P;
return OK;
}
Status GetHead(LinkQueue Q)
{
if (Q.front == Q.rear)
return FALSE;
return (Q.front->next->data);
}
Status DeletQueue(LinkQueue* Q, ElemType* e)
{
Queueptr P;
if (Q->front == Q->rear) //队空
return FALSE;
P = Q->front->next;
*e = P->data;
Q->front->next = P->next;
if (Q->rear == P) //当删除到尾结点时
Q->rear = Q->front;
free(P);
return OK;
}
Status DestroyQueue(LinkQueue Q) //从队头结点依次销毁
{
while (Q.front)
{
Q.rear = Q.front->next;
free(Q.front);
Q.front = Q.rear;
}
return OK;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
malloc分配的空间没做初始化。