我正在學習使用鏈表實現隊列數據結構。這是我的代碼。爲什麼這個顯示功能只能打印第一個插入的元素。還有一個疑問是,我在極客中看到了一些代碼,因爲那裏還有一個單獨的隊列結構。我在想,通過在末尾添加和在前面刪除,只是單個鏈接列表類型的實現就沒有問題。這有什麼不對嗎? 這是我的代碼。爲什麼在此代碼中顯示隊列功能只打印第一次插入的值多次?
#include<iostream>
#include<stdlib.h>
#define memory (struct queue*)malloc(sizeof(struct queue))
using namespace std;
struct queue{
int data;
struct queue *next;
};
struct queue *front=NULL, *rear=NULL;
class constructQ{
public:
void enQ(int num){
struct queue *newnode= memory;
newnode->data= num;
newnode->next= NULL;
if(!rear){
rear=newnode;
if(!front) front= newnode;
}
else{
rear->next= newnode;
rear= newnode;
}
}
void display(){
struct queue *tmp= front;
while(tmp){
cout << front->data << " ";
tmp= tmp->next;
}
}
};
int main(){
int num, choice;
constructQ q;
while(1){
cout << "1.enqueue 2.Dequeue 3.display 4.exit" << endl;
cin >> choice;
switch(choice){
case 1:
cin>> num;
q.enQ(num);
break;
case 3:
q.display();
break;
case 4:
exit(0);
default:
cout << "invalid input" << endl;
break;
}
}
return 0;
}
'清點<< front->數據<< 「 」;',你不是說'清點<< tmp->數據<<「」;'? – Stefan
'struct queue * tmp'是一個「C-ism」。在C++中,你可以首先編寫'queue * tmp' – molbdnilo