《資料結構打卡》第8天 自定義演算法篇

2021-10-05 02:27:27 字數 1886 閱讀 5402

0、編寫乙個演算法,要求將奇數最先輸出,偶數最後輸出(15分)使用棧來操作。

演算法思想:

1.假設陣列arr中的值為,分別用兩個棧來輸出

2.奇數棧用於儲存,偶數棧用於儲存

3.最後用元素e分別從兩個棧中取出元素奇數元素在前,偶數元素在後的乙個序列,輸出為

void

fun(elemtype arr,

int n)

//定義陣列arr,陣列長度為n

while(!

stackempty

(str2)

)destroystack

(str1)

;//銷毀棧1

destroystack

(str2)

;//銷毀棧2

}

答:演算法的執行步驟如下:

(1)掃瞄陣列arr,將所有奇數進到 st1 棧中,將所有偶數進到 st2 棧中。

(2)先將 st1 的所有元素(奇數元素)退棧,並放到陣列 a 中並覆蓋原有位置的元素;

再將 st2 的所有元素(偶數元素)退棧,並放到陣列 a 中並覆蓋原有位置的元素。

(3)銷毀兩個棧 st1 和 st2。

所以本演算法的功能是,利用兩個棧將陣列arr 中所有的奇數元素放到所有偶數元素的前面。

1、設順序表va中的資料元素遞增有序。試設計乙個演算法,將x插入到順序表的適當位置上,以保持該錶的有序性。(10分)

void

insert_sqlist

(sqlist va,

int i,elemtype x)

va.elem[i]

=x; va.length++;}

/*insert_sqlist*/

2、試寫一演算法,實現順序表的就地逆置,即利用原表的儲存空間將線性表(a1, a2,…. an)逆置為(an, an-1,…., a1)。

status reverse_list

(sqlist l)

return ok;

}//這是另一種順序表逆置的方法

//推薦使用下面的一種順序表的逆置演算法

void reverse

(sqlist &l)

}

3、編寫演算法,實現帶頭結點單鏈表的逆置演算法(10分)

演算法思路:首先把頭結拆下來,然後使用頭插法的方式依次把每個結點倒序接入到頭結點之後。

}3、已知指標 ta和 tb分別指向兩個單迴圈鍊錶的尾結點,設計乙個演算法將這兩個鍊錶連線在一起**(5分)**

①先用p指標儲存ta的頭結點

②ta的next域鏈結tb的首元結點

③釋放掉tb的頭結點

④tb的next指向ta的表頭結點

stutus connect_l

(linklist &ta,linklist &tb)

4、編寫乙個演算法,計算帶頭結點單鏈表head中所有值為x的結點的個數

int

length_list

(linklist head,elemtype x)

return i;

//最後返回值x的結點個數

//這一步相當於求單鏈表的表長一樣,只不過加了if條件判斷值是否為x。

}

5、設計乙個演算法,在給定值x之後插入新結點

《資料結構打卡》第10天 排序篇

各種排序的說明 各種排序比較次數 插入 排序 最少n 1 最多n n 1 2 冒泡 排序 最少n 1 最多n n 1 2 選擇 排序 最少最多為n n 1 2 快速 排序 最少nlog2n 最多n2 歸併 排序 nlog2n 2n 1 logn 一 例如 關鍵字 45 80 48 40 22 78 ...

《資料結構打卡》第16天 佇列篇

距離上一次更新隔了也有15天之久了,在家裡的這段時間真的過得蠻快的,但是也是昨天跟今天一樣,今天跟明天一樣,迴圈往復著 佇列的定義 佇列是操作受限的線性表,佇列的插入在隊尾,佇列的刪除在隊頭,佇列是先進先出的線性表 1 什麼是佇列的上溢現象?一般有幾種解決方法,試簡述之?答 當佇列中還有剩餘空間,入...

自定義資料結構 MyHashMap

size medium 在學習了資料結構hashmap之後,自己也定義了乙個myhashmap,下面來解析一下myhashmap。size size x large 1 實質為乙個陣列 size size medium 我定義的myhashmap中所使用的資料結構是乙個陣列,資料都儲存在這個陣列中。...