国产探花免费观看_亚洲丰满少妇自慰呻吟_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;   } 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云南省| 台中县| 多伦县| 永登县| 南开区| 台山市| 赤峰市| 拉萨市| 安宁市| 册亨县| 弥渡县| 绥江县| 石棉县| 内黄县| 民丰县| 邢台县| 平阳县| 益阳市| 剑阁县| 凉城县| 道孚县| 扎赉特旗| 凌源市| 叶城县| 瑞安市| 和硕县| 通榆县| 常宁市| 文水县| 郓城县| 聂荣县| 望都县| 合作市| 鄂伦春自治旗| 遵义市| 五华县| 章丘市| 鄂托克前旗| 绥阳县| 大丰市| 维西|