2個順序表合併

2021-10-01 07:57:41 字數 1408 閱讀 8818

在資料結構中,有時需要把2個有序的順序表進行合併,這裡以從小到大進行排序的有序表a、b合併為有序表c為例,**如下:

// sqlistai.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #define maxsize 100

typedef int elemtype;

typedef struct _sqlist

sqlist;

void initlist(sqlist &l)

int getelem(sqlist l, int i, elemtype &e)

//輸出順序表中的每個元素

void printlist(sqlist l)

l.data[i] = e;

l.length++; //順序表長度加1

return 1;

}//刪除第i個元素(1<=i<=listlength(l))

int listdelete(sqlist &l, int i, elemtype &e)

l.length--; //順序表長度減1

return 1;

}//將2個有序的順序表合併

void merge(sqlist l1, sqlist l2, sqlist &l3)

else

else

l3.data[k] = ncurmin;

l3.data[k + 1] = ncurmax;

k = k + 2;

ntmp = (nmaxbefore1 <= nrowmax) ? nrowmax : nmaxbefore1;

} i++;

j++;

} //2)解決剩餘部分

//ntmp插入到剩餘的序列中,再把該序列賦給l3

if (nmin == l1.length)

}for (x = j; x < l2.length + 1; x++)

} else

}for (x = j; x < l1.length + 1; x++)

}l3.length = k;

}//1) 已知乙個順序表l,其中的元素遞增有序排列,設計乙個演算法插入一元素x後保持該順序表仍遞增有序排列。

void insertlist(sqlist &l, elemtype x)

int locateelem(sqlist l, elemtype e)

int _tmain(int argc, _tchar* ar**)

結果如下:

合併兩個順序表

class program for int j 1 j 12 j 2 listresult merge left,right foreach int item in result console.writeline console.readline 由小到大的順序 public static lis...

合併兩個順序表

題目 將兩個有序順序表合併成乙個新的順序表,並由函式返回新的結果順序表 分析 手動開闢乙個陣列空間,其大小要大於等於原始兩個陣列的長度,之後進行遍歷,依次取較小值賦給新陣列,若有陣列未取完,剩餘部分全部賦給新陣列 如下 include int merge int l1,int l2,int len1...

順序表合併

question 建立兩個非遞減順序表a,b,合併為乙個順序表但不建立新的順序表,相同資料不插入。比如 a 1 2 3 4 5 b 2 7 可把長度短的插入到長度長的順序表中,即a 1 2 3 4 5 7 實現 如下 include include define ok 1 define error ...