单链表就地逆置
【问题描述】
结点定义如下:
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
创建单链表,输入单链表的数据元素,以-1结束。利用原有结点实现单链表的就地逆置,输出逆置后的单链表。
【输入形式】
1 2 3 4 5 6 7 8 9 10
【输出形式】
10 9 8 7 6 5 4 3 2 1
#include<iostream>
#define OK
#define ERROR
using namespace std;
typedef struct LNode
{
int data;
struct LNode* next;
}LNode, * LinkList;
int main()
{
LinkList L,p,r,s,q;
L = new LNode;
L->next = NULL;
r = L;
while (1)
{
p = new LNode;
cin>>p->data;
if (p->data == -1)
{
break;
}
else
{
p->next = NULL;
r->next = p;
r = p;
}
}
p = L->next;
s = new LNode;
s->next = NULL;
while (p)
{
q = p->next;
p->next = s;
s = p;
p = q;
}
while (s->next != NULL)
{
cout << s->data<<" ";
s = s->next;
}
return 0;
}