Problem B 調整表中元素順序(線性表)

2021-07-10 17:39:32 字數 1506 閱讀 1787

time limit: 1 sec  

memory limit: 2 mb

submit: 33  

solved: 13 [

submit][

status][

web board]

若乙個線性表l採用順序儲存結構儲存,其中所有元素都為整數。設計乙個演算法,將所有小於0的元素移到所有大於0的元素前面,要求演算法的時間複雜度不超過o(nlog(n)),空間複雜度為o(1)。

順序表的定義為:

typedef struct

sqlist;

需編寫的演算法為:

void move(sqlist *&l);

輸入的資料有兩行,第一行輸入線性表的長度n,第二行依次輸入n個元素。

輸出的資料佔一行,為調整之後的線性表,每個元素中間用空格分隔。

10

-12 25 -19 21 -18 -11 5 -18 9 -22

-12 -19 -18 -11 -18 -22 25 21 5 9

1、請選擇c++提交

2、注意調整後元素的順序

3、只需提交調整順序表元素的演算法(move函式)

#include

#include

#include

#define sizemax 100000

usingnamespacestd;

typedefintelemtype;

typedefstruct

sqlist;

voidcreatelist(sqlist *&l,elemtype n)

voidmove(sqlist *&l)

}

for(i=0;ilength;i++)

}

}

voidprint(sqlist *l)

intmain()

比較順序表中元素與表頭元素

思路分析 首先設定乙個變數儲存表頭元素,再設定兩個變數儲存順序表第乙個元素和最後乙個元素,然後分別從兩端開始遍歷順序表的元素與表頭元素相比較,先從從j所儲存的元素開始,若比表頭元素小,則j 若比表頭元素大將j所儲存的元素附給當前i所儲存的元素,然後又從i開始比較,如此往復,直到i j.include...

單鏈表元素定位(輸出鍊錶中元素的下標)

6 2 單鏈表元素定位 12 分 本題要求在鍊錶中查詢第乙個資料域取值為x的節點,返回節點的位序。l是乙個帶頭結點的單鏈表,函式listlocate l linklist l,elemtype x 要求在鍊錶中查詢第乙個資料域取值為x的節點,返回其位序 從1開始 查詢不到則返回0。例如,原單鏈表各個...

3 4鍊錶 鍊錶中元素的獲取 查詢和修改

本節是在上一小節的基礎上繼續完善我們的鍊錶相關方法的編寫,在本節中我們著重對如何獲取鍊錶中元素 查詢元素以及修改元素進行學習。獲取鍊錶的第index 0 based 個位置的元素 實際不常用,練習用 public e get int index node cur dummyhead.next for...