#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);
}
单链表的逆置
最新推荐文章于 2020-04-24 16:36:39 发布