#**是直接從提交的答題卡上覆制的,可能格式啥有錯
#執行結果當時要求用自己的姓名就不粘過來了
題目:
1、(30分)利用自己的姓名拼音字母建立乙個單鏈表(帶頭結點),注意,如果鍊錶存在已知字母,則不能插入。輸入格式樣例:
請輸入姓名:liming
建立的單鏈表輸出為:l->i->m->n->g->^
注:(1)輸入自己姓名拼音,大寫全拼,中間無空格;
(2)如果鍊錶長度小於5(不含),則在單鏈表尾部,反覆插入單個字母a,直到鍊錶長度等於5為止。
2、在1所建立的單鏈表基礎上,採用兩種方法實現如下功能:查詢單鏈表倒數第2個元素,並輸出元素值。
(1)(30分)第一種方法(常規思路):求出單鏈表長度(length),然後通過idx = length-n+1(n為倒數字置序號),得到idx值,再從頭遍歷單鏈表,直到遍歷到idx即可。
對應實現函式void getreversevalue1(linklist l,int n,char &value)//value為返回的查詢元素值
(2)(40分)第二種方法:要求不能採用第一種方法的思路(第一種方法需採用兩次遍歷,即一次用於求單鏈表長度,另外一次用於查詢idx),且僅採用一次遍歷即可得到倒數第2個元素的值。
對應實現函式void getreversevalue2(linklist l,int n,char &value)//value為返回的查詢元素值
最終輸出樣式為(以liming為例):
第一種方法(常規思路)單鏈表倒數第2個元素值為:n
第二種方法單鏈表倒數第2個元素值為:n
原始碼:
#include
#include
using
namespace std;
typedef
struct lnode lnode,
*linklist;
//建立單鏈表
bool
initlist
(linklist& l,string n)
p->next =
null
;return
true;}
//顯示單鏈表
void
display
(linklist l)
cout <<
"^"<< endl;
}void
getreversevalue1
(linklist l,
int n,
char
& value)
//計算序號
int idx;
idx = len - n +1;
//查詢元素
p = l;
for(
int i =
0; i < idx; i++
) value = p-
>data;
}void
getreversevalue2
(linklist l,
int n,
char
& value)
//一次遍歷
while
(s !=
null
) value = p-
>data;
}int
main()
;getreversevalue1
(l,2
,value1)
; cout <<
"第一種方法(常規思路)單鏈表倒數第2個元素值為:"
<< value1 << endl;
getreversevalue2
(l,2
, value2)
; cout <<
"第二種方法單鏈表倒數第2個元素值為:"
<< value2 << endl;
return0;
}
資料結構期末考試再複習
這次是幫別人複習複習資料結構。重新看這些問題,除了圖論的那些演算法,有些東西還真的是忘記了,不過看了下書還好想起來了。1 10個元素的有序表,等概率條件下折半查詢成功的平均查詢長度是29 10。畫出判定樹,其實就是二分轉二叉樹 數量 層數累加即可。2.設有序順序表中的元素依次為 017,094,15...
程式設計課 期末考試複習 專題四 線性結構
線性資料結構有很多 一維陣列 指標 棧 佇列 還有stl裡面定義的一些資料結構等等。這些線性結構在解決一些問題方面也是很有用的。一維陣列,大家都很清楚,有固定長度,有下標,每乙個下標的位置對應乙個值 指標,也可以看成一維陣列 棧是乙個先進後出的資料結構 佇列是乙個先進先出的資料結構,等等。這一專題也...
生活感想 期末考試
期末考試成績出來了 差強人意 有所進步 但還是打不到最好的水平 小花在旁邊長吁短嘆 真受不了 我最近不想談成績 一談成績就容易惱 但是現在成績出來了 也該寫寫 現在心裡平靜了很多 總而言之 除了物理壓力很大 粗心錯了一道大題12分嗷嗷嗷要知道我和小花差了1.8分就八個人啊tut 其他的各項還好 數學...