有單連結串列L(至少有結點),其頭結點指標為head,試給出該單連結串列的類C語言描述,並編寫演算法將

時間 2021-09-05 12:01:54

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()

人手裡至少有幾張銀行卡,一個人手裡至少有幾張銀行卡

每個人所持的銀行卡數量是沒有最低限制的,是根據個人需要的。如果沒有需要的話,不辦理銀行卡也是可以的。銀行卡太多沒有用,一個人手裡有幾張卡合適? 獵人之約 這個看個人需要,有的銀行規模大,網點的,但是受年費,取款手續費。有的銀行規模小,網點少,免年費,跨行取款費。建議一般二至三張就夠用的了。多了也沒有...

每個月至少有20多天都想死

小小陳學姐 我只能說你可能處於一個特別嚴重的抑鬱的狀態,那麼現在你在這上面提問題的話,可能現在這些人不管說什麼話都不能幫助你,具體還要看你就是什麼原因引起的?而且你從小的家庭環境啊,這些到底是一個什麼樣子?現在你需要去精神科或者精神病院藥物 啊,要不然的話,你挺過這段時間,可能特別的麻煩,還有就是以...

有多少個寓言故事,至少,有多少個寓言故事,至少5個。

acfun老婆指定唯一老公 有很多,伊索寓言 是世界文學史上流傳最廣的寓言故事集之一,大部分是動物寓言,少部分以神或人為主人公。狼和小羊 貓和鴉 烏龜與老鷹 農夫和蛇 狐狸和山羊 赫拉克勒斯和財神 蚯蚓和狐狸 鼴鼠 螞蟻和蟬 駱駝和宙斯 等 寓言故事有哪些?五個以上採納! 拔苗助長 葉公好龍 坐井觀...