国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++實現接兩個鏈表實例代碼

2020-01-26 14:14:11
字體:
來源:轉載
供稿:網友

 C++實現接兩個鏈表實例代碼

有以ha為頭結點的鏈表,元素個數為m;以hb為頭結點的鏈表,元素個數為n。現在需要你把這兩個鏈表連接起來,并使時間復雜度最小,請分析并實現。

思路:

很簡單的鏈表操作的題目,逆序頭部插入,并將長度較長的一方接到較短的后面,時間復雜度為O(min(m,n)),注意free使用的地點!。

實例代碼:

#include <iostream> #include <string> #include <algorithm> using namespace std; typedef int ElemType;  typedef struct Node {   ElemType data;   struct Node *next; }Lnode,*LinkList;   //打印  void print(LinkList &head) {   LinkList plist=head->next;   while(plist!=NULL)   {     cout<<plist->data<<" ";     plist=plist->next;   }   cout<<endl; }  //逆序輸入鏈表  void CreateList(LinkList &L,int m) {   LinkList p;   L=(LinkList)malloc(sizeof(Node));   L->next=NULL;   cout<<"逆序輸入元素,空格分隔:"<<endl;   for(int i=m;i>0;--i)   {     p=(LinkList)malloc(sizeof(Node));     cin>>p->data;     p->next=L->next;     L->next=p;   }   print(L); }  //連接鏈表  void Combine(LinkList &ha,int m,LinkList &hb,int n,LinkList &hc) {   LinkList selectMin;   hc=(LinkList)malloc(sizeof(Node));   int flag=0;   if(m>n)   {     selectMin=hb;     flag=1; //ha在后面    }   else   selectMin=ha;      while(selectMin->next!=NULL)   selectMin=selectMin->next;      if(flag)   {     selectMin->next=ha->next;     hc=hb;     free(ha);//notice   }   else   {     selectMin->next=hb->next;     hc=ha;     free(hb);   }   cout<<"合并后的鏈表為:"<<endl;   print(hc);  }  void Destory(LinkList &hc) //僅釋放hc即可  {   LinkList temp;   while(hc!=NULL)   {     temp=hc;     hc=hc->next;     free(temp);   } } int main() {   int m,n;   cout<<"請輸入以ha為head節點鏈表的元素個數:"<<endl;   cin>>m;   LinkList ha,hb,hc;   CreateList(ha,m);   cout<<"請輸入以hb為head節點鏈表的元素個數:"<<endl;   cin>>n;   CreateList(hb,n);   Combine(ha,m,hb,n,hc);      Destory(hc);   return 0;   } 

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江北区| 双流县| 永寿县| 鹿泉市| 清远市| 丹寨县| 南涧| 于田县| 吉安县| 建瓯市| 晋中市| 德钦县| 麦盖提县| 孙吴县| 花莲县| 天峨县| 兴国县| 新竹县| 平阴县| 兴海县| 古蔺县| 任丘市| 罗山县| 康定县| 长子县| 邓州市| 罗江县| 祁东县| 沐川县| 阿坝县| 湖南省| 大洼县| 隆化县| 怀仁县| 志丹县| 雅安市| 鹤岗市| 定结县| 汶川县| 东乡族自治县| 华安县|