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中所使用的資料結構是乙個陣列,資料都儲存在這個陣列中。...