反转链表

来源:互联网 发布:工信部大数据认证考试 编辑:程序博客网 时间:2024/05/31 00:39
#include "stdafx.h"#include <stdlib.h>typedef struct Node {int value;Node *next;}LinkNode,*LinkList;//创建链表LinkList createList(){LinkList head = NULL;LinkNode *prelink = head;for (int i = 0;i < 6;i++){LinkNode* tt = (LinkNode*)malloc(sizeof(LinkNode));//为每一个节点创建内存tt->value = i;tt->next = NULL;if (prelink == NULL){head = tt;prelink = head;}else{prelink->next = tt;prelink = tt;}}return head;//返回头结点}//打印创建的链表void display(LinkList list){while (list != NULL){printf("%d", list->value);list = list->next;}}LinkNode* antiLink(LinkNode *head){LinkNode* newh = NULL;//新链表的头结点LinkNode *p = head;//p指向原链表的头结点while (p != NULL){LinkNode* temp = p->next;//保存节点p的下一个节点p->next = newh;//反转链表中的箭头方向newh = p;//将newh节点向后移一个p = temp;//将当前p节点向后移一个}return newh;//返回新链表的头结点}int main(){LinkList list,newhead;list=createList();display(list);newhead=antiLink(list);display(newhead);    return 0;}
反转链表的核心:1)保存下一个节点
                2)将当前节点和前一个节点向后移动一个


0 0