C語言 鍊錶並集與歸併

2021-07-24 07:52:05 字數 1886 閱讀 6239

測試用例:

a = ;

b = ;

輸出結果為兩個鍊錶la與lc,其中la表示ab的並集,lc表示ab的歸併於排序。

#include "stdio.h"

#include "stdlib.h"

#include "malloc.h"

#define true 1

#define false 0

#define ok 1

#define error 0

#define maxlistsize 20

#define maxlistnumber 20

struct student;

typedef struct student list;

list *la,*lb ,*lc,*head1 = null, *head2 = null;

list *createlist(int temp,int n);

void union(list* la, list* lb);

int isequal(int a, int b);

list* unionnd(list* lc, list* lb);

void bucketsort(list* l);

void output(struct student *p);

int main();

int temp_b = ;

lc = la = createlist(temp_a, sizeof(temp_a)/sizeof(int));

lb = createlist(temp_b, sizeof(temp_b)/sizeof(int));

//output(la);

//output(lb);

union(la, lb);

lb = createlist(temp_b, sizeof(temp_b)/sizeof(int));

lc = unionnd(lc, lb);

//output(lc);

bucketsort(lc);

return0;}

list *createlist(int temp,int n)

p->next=null;//最後將最後乙個結點的指標域清空了

return head;//返回這個鍊錶的首位址

}void union(list* la, list* lb)

//printf("%d\t",i++);

//printf("%d,%d\n",p2->data,p1->data);

p2 = p2->next;

}//printf("\nflag=%d\n",flag);

if(!flag)

p2 = lb;

flag = 0;

p1 = p1->next;

}printf("並集:la = (");

for(temp = lb; temp!=null;temp=temp->next)

printf("%d ",temp->data);

printf(")");

printf("\n");

}int isequal(int a, int b)

list* unionnd(list* lc, list* lb)

void bucketsort(list* l)

void output(struct student *p)

}

實驗結果如圖

c語言求鍊錶A和鍊錶B的並集 10

之前我考慮到,如果用這種測試用例 a 1 2 3 4 5 6 b 1 3 8 9 如果對比2和3發現小於,則將2插入進去,此時會和後面的3衝突。其實我這種考慮是多餘的,它不像交集,我們在每次比較的時候,如果a比b的小的話,就會把a指標往後移動一位,接著比較3和3.哎,其實我感覺我的每乙個測試用例都不...

c 有序鍊錶歸併

剛開始寫就直接寫成了了乙個 有序的鍊錶 最後在把兩個鍊錶歸併是有寫了乙個氣泡排序來排序 可能有點雜 寫的不好見諒 pragma once include include include include include include include include include include i...

C語言檔案讀取並寫入鍊錶

c語言沒啥要逼逼的,直接上 用心體會 include stdio.h include stdlib.h 鍊錶節點結構體 typedef struct link node node 向控制台輸出鍊錶的各個節點值 void dispaly node head else 找到要插入的上乙個節點位置,實際就...