程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 指針-@數據結構大神:鏈隊列的5種操作,42行判斷隊為空,為啥會錯?求解釋!`

指針-@數據結構大神:鏈隊列的5種操作,42行判斷隊為空,為啥會錯?求解釋!`

編輯:編程綜合問答
@數據結構大神:鏈隊列的5種操作,42行判斷隊為空,為啥會錯?求解釋!`
 int Init_Queue(LinkQueue *Q)
{   
 Q=(LinkQueue*)malloc(sizeof(LinkQueue));
 if(Q==NULL) return 0;
 Q->front=(QueueNode*)malloc(sizeof(QueueNode));
 if(Q->front==NULL) return 0;
 Q->rear=(QueueNode*)malloc(sizeof(QueueNode));
 if(Q->rear==NULL) return 0;

 Q->front->next=head;//不僅需要頭指針,還需要頭節點 .定義頭節點為空,怎麼錯了? 
 Q->rear->next=head;
 k=1;
 return 1;
}


int Empty_Queue(LinkQueue *Q)
{
 if((Q->front->next==NULL)&&(Q->rear->next==NULL)&&(k=1))
 return 1;//有頭節點,但是為空 
 else return 0;
}


void EnQueue(LinkQueue *Q,int x)
{
 QueueNode *q;
 q=(QueueNode *)malloc(sizeof(QueueNode));
 if(q==NULL) exit(0);
 q->data=x;

 if(Empty_Queue(Q)==1)
 {
  head=q;head->next=Q->rear->next;
 }//q變成了頭節點 .應該和後面建立聯系 
 else
 {Q->rear->next=q;Q->rear=q;}//先給head數值 
}


int DeQueue(LinkQueue *Q)//把頭節點刪了,看和尾節點是否相同 
{
 if(Empty_Queue(Q)==1) exit(0);
 QueueNode *p;int x;
 p=Q->front->next;x=p->data;
 Q->front->next=p->next;

 if(Q->rear==p)//只有一個頭節點,但不為空 
 {Q->front=Q->rear;}//沒啥區別了 

 return x; 
}

int QueueFront(LinkQueue *Q) 
{
 int x;
 if(Empty_Queue(Q)==1) exit(0);
 x=Q->front->next->data;
 return x;
}

int main()
{   
    LinkQueue *Q;
 if(Init_Queue(Q)==1)
 {
  EnQueue(Q,1);
  EnQueue(Q,2);
  EnQueue(Q,3);DeQueue(Q);
  EnQueue(Q,4);DeQueue(Q);

  printf("QueueFront:%d\n",QueueFront(Q));
 }
 getch();
}

http://g.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=6424807aef50352ab1342d0e6373d7ca/e824b899a9014c0830d1a7680c7b02087af4f411.jpg

最佳回答:


代碼不全,沒有結構體LinkQueue

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved