用c++語言寫,需要完整的程序,能運行的
將鏈表的順序顛倒過來,最好寫清楚指針的具體實現的過程 謝謝謝謝
#include<iostream>
using namespace std;
const int N=6;
typedef int DataType;//類型定義
typedef struct node{ //單鏈表
DataType data;
struct node* next;
}LinkedNode,*LinkList;
/****由數組創建單鏈表****/
LinkList CreateList(DataType a[N])
{
LinkedNode* ListHead=new LinkedNode();
ListHead->data=a[0];
ListHead->next=NULL;
for(int i=N-1;i>=1;i--)
{
LinkedNode* p=new LinkedNode();
p->data=a[i];
p->next=ListHead->next;
ListHead->next=p;
}
return ListHead;
}
/****輸出單鏈表****/
void PrintList(LinkList ListHead)
{
if(NULL==ListHead)cout<<"The List is empty!"<<endl;
else
{
LinkedNode* p=ListHead;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}
void ReverseList(LinkedNode* pCur,LinkList& ListHead)
{
if( (NULL==pCur)||(NULL==pCur->next) )
{
ListHead=pCur;
}
else
{
LinkedNode* pNext=pCur->next;
ReverseList(pNext,ListHead); //遞歸逆置後繼結點
pNext->next=pCur; //將後繼結點指向當前結點。
pCur->next=NULL;
}
}
int main()
{
int a[N]={1,2,3,4,5,6};
LinkedNode* list=CreateList(a);
PrintList(list);
LinkedNode*pTemp=list;
ReverseList(pTemp,list);
PrintList(list);
return 0;
}