1樓:匿名使用者
1、 一開始的思路:把a、b都丟進c裡,然後對c排序。人們一開始想到的總是最懶的辦法,往往是最沒效率的。
改進:由於a、b是排好序的,先把a丟進c裡,再拿b元素一個個往裡查詢插入。這麼做要頻繁移動元素,如果線性表不是連結串列的話,開銷很大。
再改進:從a、b中各拿一個元素出來,比較後把小的放進c裡,再從剛才拿出元素的那個表裡再拿個元素出來,再比較,把小的放進c裡,重複這樣的操作,直到a、b其中一箇中的元素拿完為止,再把還有剩的元素全丟進c裡。
2、例程:
#include
/*順序表儲存空間長度的最小值*/
#define listminsize 10
/*順序表儲存結構型別定義*/
typedef struct
seqlist;
/*順序表初始化*/
void listinitialize(seqlist *pl, int size)
/*按給定的下標取順序表元素值*/
bool listelem(seqlist l, int index, listdt *pelem)
/*求順序表長度*/
int listlen(seqlist l)
/*在順序表中指定序號位置插入元素*/
bool listinsert(seqlist *pl, int pos, listdt d)
return***;
}/*把順序表中指定序號的元素刪除*/
bool listdel(seqlist *pl, int pos)
return***;
}/*在順序表中查詢元素*/
int listloc(seqlist l, listdt d,bool (*equal)(listdt,listdt))
/*取前導元素序號位置*/
bool listprior(seqlist l, int pos, int *ppriorpos)
{bool***=true;
if(pos>0&& pos=0&& pos
2樓:匿名使用者
void combl(sqlist *pa, sqlist *pb)/*合併函式*/
pa->a = pt; /*交換陣列*/
}我沒有除錯過,你自己除錯一下吧!大概思路是這樣的!
資料結構c語言版,順序線性表的合併程式。最好有註釋
3樓:防禦
//希望我的回答對你的學習有幫助
#include
/*順序表儲存空間長度的最小值*/
#define listminsize 10
/*順序表儲存結構型別定義*/
typedef struct
seqlist;
/*順序表初始化*/
void listinitialize(seqlist *pl, int size)
/*按給定的下標取順序表元素值*/
bool listelem(seqlist l, int index, listdt *pelem)
/*求順序表長度*/
int listlen(seqlist l)
/*在順序表中指定序號位置插入元素*/
bool listinsert(seqlist *pl, int pos, listdt d)
return***;
}/*把順序表中指定序號的元素刪除*/
bool listdel(seqlist *pl, int pos)
return***;
}/*在順序表中查詢元素*/
int listloc(seqlist l, listdt d,bool (*equal)(listdt,listdt))
/*取前導元素序號位置*/
bool listprior(seqlist l, int pos, int *ppriorpos)
{bool***=true;
if(pos>0&& pos=0&& pos
4樓:匿名使用者
#include
#include
#include
typedef int elemtype;
const int maxsize = 100;
typedef struct sqlist *sqlist;
sqlist getemptylist()int addelem(sqlist list, elemtype x)
}list->data[list->size] = x;
++list->size;
return 1;
}void showlist(sqlist list)printf("\n");
if(i % 20) printf("\n");
}sqlist mergelist(sqlist la, sqlist lb)
int main()
lc = mergelist(la,lb);
printf("la:\n");
showlist(la);
printf("lb:\n");
showlist(lb);
printf("lc:\n");
showlist(lc);
return 0;}
5樓:風若遠去何人留
#include
typedef struct
t;void join(t a, t b, t *c)for(;ia[c->n++] = a.a[i++];
for(;ja[c->n++] = b.a[j++];
}int main()
};t b = };
t c;
int i;
join(a, b, &c);
for(i = 0; i < c.n; i ++)printf("%d ", c.a[i]);
printf("\n");}
如何用c語言編譯出我愛你字,如何用c語言編譯出我愛你三個字
include int main 不是怎麼編輯,而是你想讓這三個字如何去呈現 include stdio.h main 如何用c程式編寫某某我愛你 include include int main else printf n你是sb n return 0 為什麼放棄 我愛你 怎麼用c語言表示 呵 一...
如何用C合併兩個已經排好序的陣列為陣列
我想要合 bai併成一個陣列一du定還要按順序重新排一zhi遍,不管以前是否dao排序。要合內並可以採用迴圈賦值的方法吧,原容來兩個陣列假定為a 10 b 10 合併的為c,排好序的a中肯定不重複,直接放入c中,可用 int t for t 0 t 10 t c t a t 對b中元素進行檢驗,若與...
如何用c語言求輸入兩個整數a和b交換他們的位置
include int main void c語言。任意從鍵盤上輸入兩個正整數a,b交換值後列印輸出?include int main void c語言 輸入a和b兩個整數,按先小後大的順序輸出a和b 交換指標 1 新建一個工程和.c檔案 輸入標頭檔案和主函式。2 然後開始定義變數型別。3 輸入a和...