程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 單鏈表 數據結構 c++-單鏈表具體實現實現reverse

單鏈表 數據結構 c++-單鏈表具體實現實現reverse

編輯:編程解疑
單鏈表具體實現實現reverse

用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;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved