C++單鏈表節點及insert函數,將參數v按從小到大順序插入到鏈表,並返回節點指針

節點

struct Node{
	int data;
	Node *next;
	Node(){
		data = 0;
		next = NULL;
   }
}

節點的插入(讓 p 的後繼結點改成 s 的後繼結點,再把結點 s 變成 p 的後繼結點):

s->next = p->next;
p->next = s;


節點的刪除

p->next=p->next->next

struct Node {
	int data;
	Node *next;
	Node() {
		data = 0;
		next = NULL;
	}
};

class List {
private:
	Node * head;
public:
	List() { head = NULL; }
	Node * insert(int v);
};

Node *List::insert(int v) {
	Node *node = new Node; //創建一個新節點
	node->data = v;
	if (head == NULL) {//頭節點是否存在,沒有存在就將當前需要插入節點改成頭節點
		head = node;
		return node;
	}
	Node *p = head;//頭節點存在時,將頭結點賦值給新創建的指針p(因爲在插入過程中需要移動此指針)
	if (v <= p->data) {//如果待插入結點數值小於頭節點,則將當前頭節點改成插入節點中的後繼節點,再將插入節點改成頭節點
		node->next = head;
		head = node;
	}
	else{
		while (p->next != NULL) {//當前節點的後繼節點數據小於V時,一直循環
			if (v <= p->next->data) break;
			p = p->next;
		}
		node->next = p->next;
		p->next = node;
	}
	return node;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章