在資料結構中,有時需要把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 ...