/* 資料結構#鏈結串列#串列合併
串列的合併
(1) 用GenList 產生 l1和 l2
(2) 將 l1和 l2合併
*/
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
Node *next;
};
int TravelList(Node *p) { //串列的
do
{
printf("%4d ", p->data);
}
while ( (p = p->next) !=NULL);
return(1);
}
Node *EndOfList(Node *p) // 找串列的結尾,回傳最後一個點的指標
{ Node *e;
do
{ e=p; }
while ( (p = p->next) !=NULL);
return(e);
}
Node *rEndOfList(Node *p) // 找串列的結尾,回傳最後一個點的指標
{
if(p->next!=NULL) return(rEndOfList(p->next));
else return(p);
}
void ListMerge(Node *L1,Node *L2){
Node *EndOfL1;
EndOfL1=rEndOfList(L1); // OR EndOfL1=EndOfList(L1);
EndOfL1->next=L2;
}
Node *GenList(int n){ //產生一個串列
Node *start,*end,*p;
start = new Node;
start->data=0;//start.data
start->next=NULL;
end = start;
for(int i=1;i<n;i++){
p = new Node;
end->next=p;
p->data=rand()%1000;
p->next=NULL;
end=p;
}
return start;
}
int main() {
Node *l1,*l2,*e1;;
printf("\nList 1: \n");
l1=GenList(3);
TravelList(l1);
printf("\nList 2: \n");
l2=GenList(5);
TravelList(l2);
ListMerge(l1,l2);
printf("\n List1: List1+List 2: \n");
TravelList(l1);
printf("\n \n"); system("pause");
return (1);
}
留言列表