#include<stdio.h>
typedef struct Lnode
{
int data;
struct Lnode* next;
}Lnode;
Lnode* init()
{
Lnode* L = new Lnode;
L->data = NULL;
L->next = NULL;
Lnode* r = L;
int a = 0;
scanf_s("%d",&a);
while (a)
{
Lnode* p = new Lnode;
p->data = a;
p->next = r->next;
r->next = p;
r = p;
scanf_s("%d",&a);
}
r->next = NULL;
return L;
}//初始化单链表
void reverse(Lnode*& L)
{
Lnode* p = L->next, * r;
L->next = NULL;//不置空会导致死循环,第一个结点的后继变为了自己。
while (p != NULL)
{
r = p->next;
p->next = L->next;
L->next = p;
p = r;
}//头插法建立单链表
}
int main()
{
Lnode *A = init();
reverse(A);
Lnode* p = A->next;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
return 0;
}
将链表原地逆置
最新推荐文章于 2024-05-18 20:14:23 发布