我不明白這有什麼錯在這裏我的代碼:插入「否」鏈表節點和打印他們的數據(C++)
//Inserting n nodes, then print their values
#include <iostream>
#include <string>
using namespace std;
//Defining a node and it's head pointer
struct node
{
int data;
node *next;
};
node *head=NULL;
node *link;
node *tmp;
int main()
{
int n;
cin>>n;
while (n>0)
{
//Insert n nodes into the list
link=new node;
if (head==NULL)
{
head=link;
}
cin>>link->data;
link=link->next;
n--;
}
link=NULL;
//print data present in those n nodes
tmp=head;
while (tmp!=NULL)
{
cout<<tmp->data;
tmp=tmp->next;
}
return 0;
}
代碼的第一部分定義了一個節點。
第二部分(main函數的開始部分)是用於創建鏈接列表的代碼,其中包含n個節點。所以我插入n個節點。
最後,我使用指針tmp輸出它們。然而,我不是獲取數據值,而是獲得無限循環。這裏發生了什麼?
謝謝
'鏈接=鏈路>未來;'你可能要考慮分配的無用的下一次您導航循環體來。 – WhozCraig
您的代碼存在許多問題,例如,一個內存泄漏,因爲你沒有刪除用'new'分配的內存,沒有意義的代碼,比如'link = link-> next'等等。然後再次我想你試圖在這裏重新發明輪子。爲什麼不使用一個std ::列表而不是? –
爲什麼要使用鏈表?家庭作業。在現實生活中,除非你做了大量的插入 - 刪除(並且我的意思是插入和刪除的次數多得多),否則你要爲這個O(1)插入刪除付出很大的代價。他們有他們的用途,但他們沒有像你在學校看到的重點那麼有用。 – user4581301