節點:
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;
}