在链表有关的问题当中,链表节点交换是一个非常 典型的一道题目,先给代码,后总结。
#include <iostream>
using namespace std;
struct Node
{
int data;
Node *next;
Node(int _data=0,Node *_next=NULL):data(_data),next(_next){}
};
Node *create(int n,int *data)
{
Node *head,*tail,*s;
head = new Node;
tail=head;
for (int i = 0; i < n; i++)
{
s = new Node(data[i],NULL);
tail->next = s;
tail = s;
}
return head;
}
void display(Node *head)
{
Node *p = head->next;
while (p)
{
cout << p->data<<" ";
p = p->next;
}
cout << endl;
}
Node *findprenode(Node *head,int preorder)
{
Node *preNode;
preNode = head;
for (int i = 0; i < preorder; i++)
{
preNode = preNode->next;
}
return preNode;
}
Node *findnextnode(Node *head, int nextorder)
{
Node *nextNode;
nextNode = head;
for (int i = 0; i < nextorder; i++)
{
nextNode &