[英]Why is it printing the last element in circular linked list?
在下面的代碼中,僅顯示最后一個元素內部存儲的數字,而不顯示其余元素。
#include <stdio.h>
#include <iostream>
using namespace std;
struct node
{
int data;
node* next;
};
struct node * Start = NULL;
struct node * End = NULL;
void CreateList(int num)
{
struct node *temp = new struct node;
int data,i=0;
while(true)
{
cout<<"Enter data \n";
cin>>data;
temp->data = data;
temp->next = Start;
if(Start==NULL)
{
Start = End = temp;
}
else{
End->next = temp;
End = temp;
}
if(i==num-1)
break;
i++;
}
}
void Display()
{
struct node* temp1;
temp1 = Start;
do{
cout<<temp1->data<<endl;
temp1=temp1->next;
} while(temp1!=Start);
}
int main()
{
int num;
cout<<"How many elements you want to input?\n";
cin>>num;
CreateList(num);
Display();
return 0;
}
我使用結構而不是類來完成它。 我使用了兩個非動態指針“開始”和“結束”。 主要問題來自Display()
函數。 Display()
正在打印最后一個元素的值。
輸出:
您沒有在CreateList
創建所需數量的節點。 您正在使用創建節點
struct node *temp = new struct node;
並在循環中重用同一節點。
這是該功能的更新版本。
void CreateList(int num)
{
int data,i=0;
while(true)
{
cout<<"Enter data \n";
cin>>data;
// Create a new node for every data
struct node *temp = new struct node;
temp->data = data;
temp->next = Start;
if(Start==NULL)
{
Start = End = temp;
}
else{
End->next = temp;
End = temp;
}
if(i==num-1)
break;
i++;
}
}
建議進一步清理。 在C ++中,您不需要使用struct node
。 僅僅node
就足夠了。
node* Start = NULL;
node* End = NULL;
和
// Create a new node for every data
node *temp = new node;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.