王道2.15

//已知兩個鏈表A和B分別表示兩個集合,其元素遞增排列。

#include <iostream>

#include <stdlib.h>

#include <stdio.h>

using namespace std;

typedef struct Lnode{

????int data;

????struct Lnode *next;

}Lnode,*LinkList;

void init_LinkList(LinkList &head){

????int x;

????head = (LinkList)malloc(sizeof(Lnode));

????head->next= NULL;

????Lnode *p,*r = head;

????cout<<"請輸入數(shù)字(-1結(jié)束):";

????cin>>x;

????while(x != -1){

????????p = (Lnode*)malloc(sizeof(Lnode));

????????p->next = r->next;

????????p->data = x;

????????r->next = p;

????????r= p;

????????cout<<"請輸入數(shù)字(-1結(jié)束):";

????????cin>>x;

???????}

? ?} //編制函數(shù),求A與B的交集,并存放于A鏈表中。

void create_unity(LinkList &L1,LinkList L2){

????Lnode *p = L1,*p1 = L1->next,*p2= L2->next,*temp;

????while(p1!=NULL&&p2!=NULL){

????????if(p1->data>p2->data){

????????????????p2 = p2->next;

????????}else if(p1->data < p2->data){

????????????temp = p1;

????????????p1 = p1->next;

????????????p->next = p1;

????????????free(temp);

? ? ? ? ?}else{

????????????p->next = p1;

????????????p = p1;

????????????p1 = p1->next;

????????????p2 = p2->next;

????????????}

????????}

????????p->next = NULL;

}

int main(){

????LinkList L1,L2;

????init_LinkList(L1);

????init_LinkList(L2);

????Lnode *p; p = L1->next;

????while(p != NULL){

????????cout<<p->data<<" ";

????????p = p->next;

? ? ? }

????cout<<endl;

????p = L2->next;

????while(p != NULL){

????????cout<<p->data<<" ";

????????p = p->next;

????}

????cout<<endl;

????create_unity(L1,L2);

????p = L1->next;

????while(p != NULL){

????????cout<<p->data<<" ";

????????p = p->next;

????}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容