单链表的逆置

来源:互联网 发布:碱性水 知乎 编辑:程序博客网 时间:2024/06/04 17:40
#include <stdio.h>#include <malloc.h>typedef struct Node{int value;struct Node* next;}LinkList;void createList(LinkList* &L){LinkList* tail;LinkList* p;int va;L = (LinkList*)malloc(sizeof(LinkList));tail = L;while(scanf("%d", &va) != EOF){LinkList* newNode = (LinkList*)malloc(sizeof(LinkList));newNode->value = va;tail->next = newNode;tail = newNode;}tail->next = NULL;}void reverseList(LinkList* &L){if (L == NULL)return;LinkList* tail = L->next;if (tail == NULL)return;L = NULL;LinkList *post = tail->next, *pre = L;while(post != NULL){tail->next = pre;pre = tail;tail = post;post = post->next;}tail->next = pre;LinkList * newNode = (LinkList*)malloc(sizeof(LinkList));newNode->next = tail;L = newNode;}void outputList(LinkList* L){LinkList* r = L->next;while(r != NULL){printf("%d ", r->value);r = r->next;}printf("\n");}int main(){LinkList* L = NULL;createList(L);outputList(L);reverseList(L);outputList(L);}

原创粉丝点击