不帶頭結點的單連結串列的建立(頭插法和尾插法)

解語花_99發表於2020-10-02

1、用頭插法建立不帶頭結點的單連結串列

#include<iostream>
using namespace std;

//單連結串列的結構體
typedef struct Node {
	int data;
	struct Node *next;
}Node;


/*不帶頭結點的單連結串列的建立(頭插法)*/
void LinkCreate(Node *&L) {
	int a=0;
	cout << "請輸入資料" << endl;
	cin >> a;
	while (a!=9999) { //資料為9999時,停止輸入
		Node *p;
		p = (Node*)malloc(sizeof(Node));
		p->data = a;
		p->next = L;
		L = p;
		cin >> a; //連續輸入資料
	}
	
}

/*主函式*/
int main(){
    Node *L=NULL;

	LinkCreate(L);
	display(L);
	return 0;
	system("pause");
}

輸出:(注意這裡是倒序輸出)

請輸入資料
12 56 87 45 9999
表中資料輸出:
45 87 56 12
請按任意鍵繼續. . .

2、用頭插法建立不帶頭結點的單連結串列

#include <iostream>
using namespace std;

typedef struct Node {
	int data;          //資料域
	struct Node*next;   //指標域
}LinkNode; //單連結串列節點型別

//尾插法
void LinkCreate(LinkNode *&L) {
	int a = 0;
	cout << "請輸入資料" << endl;
	cin >> a;
	Node *r;
	r = L;
	while (a != 9999) {
		Node *p;
		p = (Node*)malloc(sizeof(Node));
		p->data = a;
		p->next = NULL;
		if (L==NULL) {
			L = p;
			r = L;
		}
		else {
			r->next = p;
			r = p;
		}
		cin >> a;
	}
}

//單連結串列的輸出
void display(Node *L) {
	cout << "表中資料輸出:" << endl;
	while (L != NULL) {
		cout << L->data << " ";
		L = L->next;
	}
	cout << endl;
}


int main() {
		LinkNode *L=NULL;
		LinkCreate(L);
		display(L);

		system("pause");
	return 0;
	
}

輸出:(注意這裡是順序輸出)

請輸入資料
12 36 54 78 9999
表中資料輸出:
12 36 54 78
請按任意鍵繼續. . .

相關文章