设计链表

获取第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。

你可能感兴趣的:(c语言,c++算法刷题笔记,链表,数据结构)