问一下这个队列哪里出现了问题

yangyijk 2014-02-02 06:14:17
#include <iostream>

struct node{
char data;
struct node *next;
};

struct queue{
struct node *front;
struct node *rear;
};

struct queue *create_queue(){
struct queue *q=new queue;
q->front=NULL;
q->rear=NULL;
return q;
}

void in_queue(struct queue *q,char a){
struct node *n=new node;
if(n==NULL){
return;
}
n->data=a;
n->next=NULL;
q->rear->next=n;
q->rear=n;
}

void out_queue(struct queue *q){
if(q->rear == q->front){
return;
}else{
struct node *temp=q->front->next;
q->front->next=temp->next;
if(q->rear==temp){
q->rear=q->front;
}
delete temp;
}
}

void print(struct queue *q){
struct node *n=q->front->next;
while(n){
std::cout<< n->data;
n=n->next;
}
}


int main(){
struct queue *q=create_queue();
in_queue(q,'t');
in_queue(q,'s');
print(q);
in_queue(q,'c');
print(q);
system("pause");
}


...全文
136 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孩皮妞野 2014-02-02
  • 打赏
  • 举报
回复

void in_queue(struct queue *q,char a){
    struct node *n=new node;
    if(n==NULL){
         return;
    }
    n->data=a;
    n->next=NULL;
    if(q->rear)
    {
        q->rear->next=n;
    }else{
       q->front=n;
    }
    q->rear=n; // 我刚才漏了这个。
}
孩皮妞野 2014-02-02
  • 打赏
  • 举报
回复

void in_queue(struct queue *q,char a){
    struct node *n=new node;
    if(n==NULL){
         return;
    }
    n->data=a;
    n->next=NULL;
    if(q->rear)
    {
        q->rear->next=n;
    }else{
       q->front=q->rear=n;
    }
}

void out_queue(struct queue *q){
   struct node * tmp;

   if(q->front==NULL)
      return;
   if(q->front==q->rear)
   {
      delete q->front;
      q->front=q->rear=NULL;
      return;
   }

   tmp=q->front;
   q->front=temp->next;
   delete tmp;
}

void print(struct queue *q){
    struct node *n=q->front;
    while(n){
       std::cout<< n->data << ' ';
       n=n->next;
    }
}
粗看了下,你再试试?

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧