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

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");
}


...全文
102 点赞 收藏 2
写回复
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;
    }
}
粗看了下,你再试试?
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告