#include<iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList TailInsert(LinkList &L)
{
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
LNode *s,*r=L;
int x;
cin>>x;
while(x!=-1)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
cin>>x;
}
r->next=NULL;
return L;
}
void ListVisit(LinkList L)
{
LNode *p=L->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
//单链表的就地逆置
LinkList Reverse(LinkList &L)
{
LNode *p=L->next;
LNode *r;//防断链
L->next=NULL;
while(p!=NULL)
{
r=p->next;
p->next=L->next;
L->next=p;
p=r;
}
return L;
}
int main()
{
LinkList L;
TailInsert(L);//尾插法
ListVisit(L);//输出
Reverse(L);//单链表的就地逆置
ListVisit(L);
return 0;
}
单链表的就地逆置
本文介绍了如何在C++中使用结构体LNode实现链表,包括尾插入函数TailInsert、遍历函数ListVisit以及单链表的就地逆置函数Reverse。展示了创建链表、插入节点并逆置的完整示例。
摘要由CSDN通过智能技术生成