1. 程式人生 > >含頭結點的C++尾插法建立簡單鏈表並輸出

含頭結點的C++尾插法建立簡單鏈表並輸出

#include <iostream>
using namespace std;

const int N = 10;
struct Node
{
	int data;
	Node *next;
};
//尾插法連結串列建立與輸出
int main()
{
	int i;
	Node *head, *pNew, *pEnd;//一個頭結點,一個不斷建立的新節點,一個始終會指向末端的尾結點
	head = new Node;//給頭結點分配空間
	pEnd = head;/*讓頭結點指向剛建立的第一個節點,此時pEnd也是末節點,
	剛開始同時擔當頭和尾,等pEnd移走時,head還是指向第一個節點,後面才好輸出*/
	for ( i = 0; i < N; i++ )
	{
		pNew = new Node;
		pNew->data = i;//賦值
		pEnd->next = pNew;//讓pEnd指向pEnd
		pEnd = pNew;/*pEnd 本來在 pNew前面,但現在pEnd在pNew上,
		因為是賦地址值,原來pEnd並沒有消失,下個迴圈pNew = new Node,
		就又重新建立一個節點,反覆執行*/
	}
	pEnd->next = nullptr;//讓最後一個節點指向空
	
	//遍歷輸出
	Node *p = head->next;
	while ( p )
	{
		cout << p->data;
		p = p->next;
	}
	return 0;
}