將兩個無序陣列合併為有序鍊錶

2021-04-09 10:36:10 字數 1297 閱讀 9884

實現思想:

把兩個無序的陣列首先排序,然後再按照鍊錶結構把它們分別構造好,然後再把兩個有序鍊錶合併。

int const array1_size = 5;//陣列1的長度

int const array2_size = 7;//陣列2的長度

//鍊錶結構體

typedef struct listnode

listnode;

//合併兩個有序鍊錶返回不帶頭結點的頭指標

listnode * mergelist(listnode *p,listnode *q)

else

}

if(p != null)

r->next = p;

else

r->next = q;

p = h;

h = h->next;

delete p;

return h; }

//構造乙個鍊錶(沒有頭結點的)

listnode * generatelist(int array,int length)

temp->next = null; 

old_head = h;

h = h->next;

delete old_head;

return h; }

//列印鍊錶

void print_list(listnode *h)

//引入氣泡排序演算法

void swap(int *a,int *b)

void bubble_sort(int *array,int length)

/*********************ok,所有準備工作已經做好,開始main()函式**********/

//輸入字元表示結束

int _tmain(int argc, _tchar* argv) ;

int list2[array2_size]=;

bubble_sort(list1,array1_size);

bubble_sort(list2,array2_size);

listnode * m_list1,*m_list2,*m_list;

m_list1 = generatelist(list1,array1_size);

m_list2 = generatelist(list2,array2_size);

m_list = mergelist(m_list1,m_list2);

print_list(m_list);

scanf("%c",&end);

return 0; }

兩個有序陣列合併為乙個有序陣列

思想 先依次比較兩個陣列,按照小的就傳入新的陣列。當這次比較完之後可能有乙個陣列的長度很長,留下一些陣列,然後在新陣列的末尾插入即可。1 class arraysort 2else 1920 後面連個while迴圈是用來保證兩個陣列比較完之後剩下的乙個陣列裡的元素能順利傳入 21 while i a...

兩個有序鍊錶合併為有序

include 兩個有序遞增的單鏈表 有頭結點 合併為新單鏈表。include 用尾插法表示這兩個鍊錶較好,因為這樣建立鍊錶是有序的,遞增的。如果用頭插法,for迴圈改為for i n i 0,i 使其新建的鍊錶遞增 typedef struct lnode lnode lnode creat ln...

兩個有序陣列合併

題目描述 已知陣列a中有m個按公升序排列的元素,陣列b中有n個按降序排列的元素,程式設計將a與b中的所有元素按降序存入陣列c中。輸入輸入有兩行,第一行首先是乙個正整數m,然後是m個整數 第二行首先是乙個正整數n,然後是n個整數,m,n均小於等於1000000。輸出輸出合併後的m n個整數,資料之間用...