-
题目描述
-
解题思路心得
就是一个双向循环链表,交换是直接交换的结点数据值。
-
代码
#include <iostream>
using namespace std;
struct LNode
{
int data;
LNode *left, *right;
};
void creatlist(LNode *&L, int length)
{
LNode *p = L;
for (int i = 0; i < length; i++)
{
LNode *tmp = new LNode;
cin >> tmp->data;
tmp->right = NULL;
tmp->left = p;
p->right = tmp;
p = p->right;
}
p->right = L;
L->left = p;
}
void swapnode(LNode *&L, int index)
{
LNode *p = L;
int tmp = 0;
for (int i = 0; i < index; i++)
{
p = p->right;
}
tmp = p->data;
p->data = p->left->data;
p->left->data = tmp;
}
int printlist(LNode *L, int n)
{
LNode *p = L->right;
if (p == NULL)
{
return 0;
}
for (int i = 0; i < n - 1; i++)
{
cout << p->data;
cout << " ";
p = p->right;
}
cout << p->data;
cout << endl;
return n;
}
int main()
{
int n = 0;
int index = 0;
while (1)
{
LNode *L = new LNode;
L->left = NULL;
L->right = NULL;
cin >> n;
if (!n)
{
break;
}
creatlist(L, n);
cin >> index;
swapnode(L, index);
printlist(L, n);
}
}