节点:
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;
}