每天学习一算法【3】单链表翻转

来源:互联网 发布:淘宝宝贝上架技巧视频 编辑:程序博客网 时间:2024/05/27 14:12

每天学习一算法【3】单链表翻转

本文只说明一种方法。
例如链表 head->node1->node2->node3->node4->NULL;
翻转之后 head->node4->node3->node2->node1->NULL;

思路:
我们先定义三个节点:p,q,s;
其中,p是当前节点,s是下一个节点,q是上一个节点;
1.保存下一个节点,s = p->next;
2.把当前节点的下一个节点重新赋值为上一个节点,p->next = q;
3.现在,当前节点p要向下进行,当前节点也就变成了上一个节点,q = p;
4.把下一个节点赋给p,p = s;

void reverse(LinkList l){//head->1->2->3->4->...->NULL    LinkList p = l->next;//p为当前节点    LinkList s = NULL;//下一个节点    LinkList q = NULL;//上一个节点    while(p != NULL){        s = p->next;        p->next = q;        q = p;        p = s;    }    LinkList h = (LinkList)malloc(sizeof(Node));    h->next = q;    print(h);}

完整代码戳这里;

0 0
原创粉丝点击