//实现一个队列,任意输入一串字符,以999为结束标志,然后打出队列中的数据
//定义队列
typedef struct QNode
{
int data;
QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQuede;
//初始化一个链队
void initQueue(LinkQuede *p)
{
p->front = p->rear = new QNode;
if (!p->front) exit(0);
p->front->next = NULL;
}
//入队
void Enqueue(LinkQuede *p,int e)
{
QueuePtr q;
q = new QNode;
if (!q) exit(0);
q->next = NULL;
q->data = e;
p->rear->next = q;
p->rear = q;
}
//出队
void Dequeue(LinkQuede *p,int*e)
{
if (p->front == p->rear) exit(0);
QueuePtr q = new QNode;
if (!q)exit(0);
q = p->front->next;
*e = q->data;
p->front->next = q->next;
delete q;
}//销毁队列
void destryQueue(LinkQuede *p)
{
while (p->front)
{
p->rear = p->front->next;
delete(p->front);
p->front = p->rear;
}
}//测试程序
int main()
{
int e;
LinkQuede q;
initQueue(&q);
cout << "请输入一个队列:" << endl;
cin >> e;
while (e != 999)
{
Enqueue(&q,e);
cin >> e;
}
cout << "打印队列元素:" << endl;
while (q.front != q.rear)
{
Dequeue(&q,&e);
cout << e << " ";
}
cout << endl;
destryQueue(&q);
if (q.front == q.rear)
cout << "ok" << endl;
system("pause");
return 0;
}
关于c语言实现队列的算法,总会出现内存方面错误,求高人指明错误
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- 纵横车 2015-09-05 04:36关注
只是输出队列的时候循环越界了,写成这样试试。
while (q.front->next != NULL) { Dequeue(&q,&e); cout << e << " "; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
- ¥15 fluent的在模拟压强时使用希望得到一些建议
- ¥15 STM32驱动继电器
- ¥15 Windows server update services
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
- ¥15 模糊pid与pid仿真结果几乎一样
- ¥15 java的GUI的运用
- ¥15 Web.config连不上数据库
- ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
- ¥15 怎么配置广告联盟瀑布流