1 定义结点
typedef struct slinklist {
int data;
struct slinklist *next;
}slinklist, *pslinklist;
2 判断返回
- 头结点为空,返回
- 链表为空,返回
- 链表只有一个结点,返回
if(!head) return;
if(!head->next) return;
if(!head->next->next) return;
3 反转算法
- 初始化:定义一个游标,用来保存当前结点,保证链表不会断掉。游标指向链表第2个结点,并置空第一个结点的后继结点。
- 取结点:从游标上取下当前结点,并保存,游标向前走一步。
- 在头结点后面插入取下来的结点。
如下图:
代码如下