获取第n个节点的值:
伪代码:
cur = dumyhead->next;//dumyhead为虚拟头节点
while(n)//当返回的是第0个节点时
{
cur = cur->next;
n--;
}
return cur->val;
头部插入节点:
伪代码:
dumyhead = new node();//创建虚拟节点
newnode->next = dumyhead->next;
dumyhead->next = newnode;
return dumyhead->next;
尾部插入节点:
伪代码:
cur = dumyhead;
while(cur->next != null)
{
cur = cur->next;
}
cur->next = new node;
return dumyhead->next;
第n个节点前插入节点
伪代码:
newnode = new node();
cur = dumyhead;
while(n)
//默认为零下标
{
cur = cur->next;
n--;
}
newnode->next = cur->next;
cur->next = newnode;
return dumyhead->hnext;
删除第n个节点:
伪代码:
cur = dumyhead;
while(n)
{
cur = cur->next;
n--;
}
cur->next = cur->next->next;
return dumyhead->next;
本文的核心有两个:1是边界的判断,判断是否找到的是第n个节点,即while(n),只需要考虑极端情况,即找n=0时的情况下,cur是否为第0个节点。2是增加链表节点时要先增加newnode->next,在增加cur->next。