1樓:匿名使用者
樓主你好,這幾個問題我來回答你吧,這些都是資料結構裡面的基本問題,難度並不太大,可能你沒有理解清楚,授人魚不如授之以漁,除了解答,我還說說解決這些問題的思路,希望你有所啟發和感悟。
第1題碰到這些問題,什麼是先序呢?就是先訪問根結點,在訪問左子樹,再訪問右子樹。中序就是先訪問左子樹,再訪問根節點,再訪問右子樹。
後序不用我說聰明的樓主應該知道了吧。那麼根據這個規律,我們可以得出,先序遍歷定根結點,中序分左右子樹的規律。這個結論有些抽象,下面我們根據這個題目詳細說。
先序的第一個是a,那麼我們去看中序遍歷a的位置,在第4個,這個時候我們就可以得出根節點一定是a,並且a的左子樹有bfd,右子樹有gehc,那麼到底是什麼順序呢?不急我們一個個看,先看左子樹。這個時候我們再回過頭去看先序遍歷,a的下一個是b,我們在中序遍歷中找b,是第一個,那麼我們可以肯定的是b一定沒有左子樹了,b的右子樹一定是df,在根據先序中的順序可以肯定整棵樹的左邊如下:
a/ \b\
d/f根據同樣的方法可以確定右子樹,這個就留給你自己做練習啦。呵呵第一題搞定。
第2題這個問題的本質其實就是考察2分法是否掌握了。
很明顯while( )迴圈中的條件肯定是low<=high,只要他們沒有交錯就要繼續查詢下去。接下來mid=(low+high)/2,這是顯然的。下面for迴圈中的條件當然是x>=t.
r[i],這從i--可以看出來是每次從連結串列位開始依次後移一個位置以便插入x。最後for迴圈體中有一個空,這個就是把x插入進去,很顯然是t.r[i]=x;那麼這道題也結束啦。
第3題有了第2題的基礎,我不準備給你寫完整的演算法,我只說說思路咯。思路是,要完成逆轉,你可以新建一個連結串列,然後對於原來的連結串列尾開始,依次插進新的連結串列中,當然啦,是頭插法了,而第2題中你已經學會了倒過來查詢連結串列,那麼這道題是不是也迎刃而解了呢?
最後希望你進步哦~
2樓:匿名使用者
樓主要答案嗎,這是標準答案,原理都在資料結構課本上,就不解釋了:
第一題答案:
a/ \
b c
\ /
d e
/ / \
f g h
後序遍歷:fdbgheca
第二題答案:
void bininsert (seqtable t, recordtype x)
第三題答案:(利用原來的連結串列空間)
用演算法實現有一個單連結串列其頭指標為head,編寫一個函式計算域為x的結點個數。
3樓:
很久沒有寫拉,不知道是可以編譯通過,不過基本就是這個樣子!
int count(* head)
return sum;}
某帶頭結點的單連結串列的頭指標為head,則判定該連結串列為非空的條件是?
4樓:來自烏山心花怒放的彩葉草
判定該連結串列為非空的條件是:head->next!=null。
帶頭節點的情況下,連結串列空時還會存在一個節點,所以head不為空,head->next為空 不帶頭節點的情況下,連結串列空時,沒有任何節點,head指向null。
無論是否有頭結點,頭指標始終指向連結串列的第一個結點。如果有頭結點,頭指標就指向頭結點。
頭結點的作用是使所有連結串列的頭指標非空,並使對單連結串列的插入、刪除操作不需要區分是否為空表或是否在第一個位置進行,從而與其他位置的插入、刪除操作一致。
5樓:淘汰之刃
a 是不帶頭節點的單連結串列為空的判定條件,head為第一個節點,要是他的內容為null,則整個連結串列都沒有內容。
b 帶頭節點的單連結串列為空的判定條件,帶頭節點的單連結串列的頭節點head總是不空的,但是他的裡面不儲存具體的內容。他的下一個節點才是儲存內容的開始,若沒有下一個節點,則表示該連結串列沒有儲存內容。
所以選b
6樓:罔替卡
head->next==null
7樓:瀧水悅
head==null
有一個帶頭節點的單連結串列,頭指標為head,編寫一個演算法計算所有資料域為x的結點的個數(不包括頭結點)
8樓:百度文庫精選
內容來自使用者:單羽夢
題目:有一個帶頭節點的單連結串列,頭指標為head,編寫一個演算法計算所有資料域為x的結點的個數(不包括頭結點)
#include
#include
typedef struct lnode
lnode, *linklist;
void initlist(linklist *l);
void creatfromhead(linklist l);
int count(linklist l);
void main()
void initlist(linklist *l)void creatfromhead(linklist l)}int count(linklist l)return sum;}}
1、建立一個帶頭結點的單連結串列(頭指標為head),且遍歷此連結串列(輸出連結串列中各結點的值);
9樓:匿名使用者
#include using namespace std;
struct node ;
typedef struct node node;
typedef struct node *ptrlist,*list;
//建立連結串列
void create(node *&t)p = t;
cin>>n;
for(int i=0;i>tmp->value; //輸入一個數值
tmp->next = null; //插入一個節點p->next = tmp;
p = tmp;}}
void printnode(ptrlist v)cout return ; }int main() 每個人所持的銀行卡數量是沒有最低限制的,是根據個人需要的。如果沒有需要的話,不辦理銀行卡也是可以的。銀行卡太多沒有用,一個人手裡有幾張卡合適? 獵人之約 這個看個人需要,有的銀行規模大,網點的,但是受年費,取款手續費。有的銀行規模小,網點少,免年費,跨行取款費。建議一般二至三張就夠用的了。多了也沒有... 小小陳學姐 我只能說你可能處於一個特別嚴重的抑鬱的狀態,那麼現在你在這上面提問題的話,可能現在這些人不管說什麼話都不能幫助你,具體還要看你就是什麼原因引起的?而且你從小的家庭環境啊,這些到底是一個什麼樣子?現在你需要去精神科或者精神病院藥物 啊,要不然的話,你挺過這段時間,可能特別的麻煩,還有就是以... acfun老婆指定唯一老公 有很多,伊索寓言 是世界文學史上流傳最廣的寓言故事集之一,大部分是動物寓言,少部分以神或人為主人公。狼和小羊 貓和鴉 烏龜與老鷹 農夫和蛇 狐狸和山羊 赫拉克勒斯和財神 蚯蚓和狐狸 鼴鼠 螞蟻和蟬 駱駝和宙斯 等 寓言故事有哪些?五個以上採納! 拔苗助長 葉公好龍 坐井觀...人手裡至少有幾張銀行卡,一個人手裡至少有幾張銀行卡
每個月至少有20多天都想死
有多少個寓言故事,至少,有多少個寓言故事,至少5個。