插入一個元素到有序順序表中,使其再次有序
阿新 • • 發佈:2018-11-05
程式碼:
#include <stdio.h> /* 題目:資料結構題集17頁2.11 設順序表中資料元素遞增有序,試寫一演算法,將x插入到順序表的適當位置上,以保持該表的有序性 演算法:逆序遍歷順序表找合適的插入new_elem的位置,並將其插入 */ #define maxlen 50 typedef struct{ int arr[maxlen]; int length; }Seqlist; void print_SQ(Seqlist list){ for(int i=0; i<list.length;i++){ printf("%d ",list.arr[i]); } printf("\n"); } int main(void) { Seqlist list; list.arr[0]=1;list.arr[1]=6;list.arr[2]=9;list.arr[3]=30; list.length = 4; if(list.length+1 > maxlen){ return -1; } int i; //要插入連結串列的數值 int new_elem = 6; //更新表長 ++list.length; //如下是插入new_elem操作:逆序遍歷順序表找合適的插入new_elem的位置,並將其插入 for(i=list.length-1;i>=0;i--){ if(list.arr[i] >= new_elem){ //當前元素向後移動賦值 list.arr[i+1] = list.arr[i]; }else{ list.arr[i+1] = new_elem; break; } // print_SQ(list); } //列印順序表 print_SQ(list); return 0; }