//将链表中所有结点连接方向原地逆转,仅利用链表原来的存储空间,时间复杂度为O(1)
#include<iostream>
using namespace std;
typedef struct LNode
{
int data;
LNode* next;
}LNode, * LinkList;
int CreateList_L(LinkList& L, int n)
{
LNode* p, * r;
L = new LNode;
L->next = NULL;
r = L;
for (int i = 0; i < n; i++)
{
p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
return 0;
}
void Print(LinkList L)
{
LNode* p;
p = L->next;
cout << "(";
while (p)
{
cout << p->data << "";
p = p->next;
}
cout << ")" << endl;
}
int Resver(LinkList& La, LinkList& Lc)
{
LNode* pa;
LNode* pc;
pa = La->next;
while (pa)
{
pc = pa;
pa = pa->next;
pc->next = Lc->next;
Lc->next = pc;
}
delete La;
return 0;
}
int main()
{
LinkList La;
LinkList Lc;
int n;
cout << "输入链表长度" << endl;
cin >> n;
cout << "输入数据:" << endl;
CreateList_L(La, n);
cout << "单链表:" << endl;
Print(La);
Lc = new LNode;
Lc->next = NULL;
Resver(La, Lc);
cout << "逆转后的单链表:" << endl;
Print(Lc);
return 0;
}
将链表中所有结点连接方向原地逆转,仅利用链表原来的存储空间,时间复杂度为O(1)
最新推荐文章于 2023-03-11 16:56:45 发布