最近做算法题的时候,链表多一些,凑着这个机会总结下链表的操作。
链表的结点中有指针域和data域,指针域负责存储下一个结点的地址,指向下一个结点的方向标。data域存储链表的内容。
1、链表的插入
解析:p指针指向的结点和p->next指针指向的结点之间插入一个S结点。
首先S结点的指针指向p的下一个结点。S->next = p->next,也就是图中的①,接着是②,断开p和p->next结点之间的联系,让p结点指向S的地址,p->next=S。
注意:S->next = p->next p->next=S 的顺序不能调换。原因如下:
如果p->next = S,就先把③执行了,接下来S->next = p->next,其实就编程了S->next = S了。把原来的地址覆盖掉了。所以顺序一定不能错。
2、链表的删除
q->next=r ,p->next=q,现在要把q删除掉,p需要知道r的指针地址,p->next=q->next。
这样应该就可以了。
主要涉及链表算法中用到的多一些。