将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的空间。表中不允许又重复的数据
生活随笔
收集整理的這篇文章主要介紹了
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的空间。表中不允许又重复的数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<iostream>
using namespace std;typedef struct lnode
{//定義結點類型int data;struct lnode *next;//遞歸定義
} lnode,*LinkList;void CreateList(LinkList &L,int n)
{//創建新鏈表L=new lnode;//生成一個頭結點L->next=NULL;//結點L的next置空for(int i=0; i<n; i++){lnode *p;p=new lnode;//生成新結點cin>>p->data;//輸入結點數據域p->next=L->next;L->next=p;}
}void MegerList(LinkList &LA,LinkList &LB,LinkList &LC)
{lnode *pa,*pb,*pc;//定義三個結點pa=new lnode;pb=new lnode;pc=new lnode;pa=LA->next;//pa指向鏈表LA的第一個結點pb=LB->next;//指向鏈表LB的第一個結點LC=LA;pc=LC;//pc指向LC,也就是指向LAwhile(pa&&pb){//如果pa小于等于pb,把pa賦給pc的next域,pc指向pa,pa指向pa的下一個元素if(pa->data<pb->data){pc->next=pa;pc=pa;pa=pa->next;}if(pa->data>pb->data){//如果pa大于pb,把pb賦給pc的next域,pc指向pb,pb指向pb的下一個元素pc->next=pb;pc=pb;pb=pb->next;}if(pa->data==pb->data){pc->next=pa;pc=pa;pa=pa->next;pb=pb->next;}}pc->next=pa?pa:pb;//將非空鏈表的剩余段插入到pc所指結點之后delete LB;//釋放LB的頭結點
}void display(LinkList &L)
{lnode *p;p=new lnode;p=L->next;while(p){cout<<p->data;p=p->next;}
}int main()
{LinkList LA,LB,LC;int m,n;cout<<"請輸入LA的長度:";cin>>m;cout<<"請逆序遞減輸入LA的元素:";CreateList(LA,m);cout<<"請輸入LB的長度:";cin>>n;cout<<"請逆序遞減輸入LB的元素:";CreateList(LB,n);MegerList(LA,LB,LC);cout<<"合并后的鏈表LC為:";display(LC);return 0;
}
總結
以上是生活随笔為你收集整理的将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的空间。表中不允许又重复的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节跳动旗下产品有哪些 字节跳动旗下都有
- 下一篇: 写字板作品介绍 写字板是哪个平台的作者