二叉連結串列和迴圈連結串列分別是不是線性結構

時間 2021-07-21 03:39:37

1樓:匿名使用者

二叉連結串列和迴圈連結串列不是線性結構,線性結構有:線性表,棧,佇列,雙佇列,串。

非線性結構有:二維陣列,多維陣列,廣義表,樹(二叉樹等),圖。

二叉連結串列是樹的二叉連結串列實現方式,以二叉連結串列作為樹的儲存結構。所以二叉連結串列不是線性結構。

迴圈連結串列是鏈式存貯結構,是表中最後一個結點的指標域指向頭結點,整個連結串列形成一個環,屬於圖。所以不是線性結構。

擴充套件資料

迴圈連結串列的特點是無須增加儲存量,僅對錶的連結方式稍作改變,即可使得表處理更加方便靈活。

迴圈連結串列中沒有null指標。涉及遍歷操作時,其終止條件就不再是像非迴圈連結串列那樣判別p或p->next是否為空,而是判別它們是否等於某一指定指標,如頭指標或尾指標等。

在單連結串列中,從一已知結點出發,只能訪問到該結點及其後續結點,無法找到該結點之前的其它結點。而在單迴圈連結串列中,從任一結點出發都可訪問到表中所有結點,這一優點使某些運算在單迴圈連結串列上易於實現。

2樓:匿名使用者

詳見計算機二級c語言程式設計選擇題題庫!

3樓:惡夢莫博

迴圈連結串列是線性結構(迴圈連結串列是線性連結串列的一種形式,採用鏈式儲存結構)!!!二叉連結串列是非線性結構

4樓:蛋殼老闆

迴圈佇列 雙向連結串列 二叉連結串列都是線性結構

二維陣列 廣義表多維陣列是非線性結構

反對第一個回答

5樓:蠱矨

資料結構有兩種分類:邏輯結構和儲存結構

邏輯結構:集合、線性、非線性

儲存結構(物理結構):順序儲存、鏈式儲存、索引、雜湊從兩個方面來看:

二叉連結串列是以樹作為邏輯結構,連結串列為儲存結構的資料。

6樓:匿名使用者

不是!原因如下:

線性連結串列---是具有連結儲存結構的線性表,它用一組地址任意的儲存單元存放線性表中的資料元素 也就是說:「線性表」的鏈式儲存結構才稱為線性連結串列。所以二叉連結串列不是線性結構。

從結構說二叉連結串列的一個節點有左右指標和資料,左右指標分別連線著一個或兩個子節點的資料,因而不能成線性結構。這是我自己的理解,希望有所幫助。

7樓:月下倚欄人

是因為線性表、棧、佇列、和陣列都是線性結構。而你所說的兩個都是線性表的鏈式儲存結構

非線性結構有樹。(在做任務,評個最佳答案吧~~)

8樓:匿名使用者

二叉連結串列是樹的一種儲存結構,迴圈連結串列也是一種儲存結構。

線性結構是一種邏輯結構。

本人也是菜鳥,以上是自己的理解。

下列結構中屬於線性結構鏈式儲存的是()? a 雙向連結串列 b 迴圈列隊 c 二叉連結串列 d 二維陣列

9樓:黯夜

選a 資料的儲存結構是指資料的邏輯結構在計算機中的表示。雙向連結串列也叫雙連結串列,是連結串列的一種,它的儲存方式是線性結構鏈式。迴圈佇列,二叉連結串列和二維陣列都是順序儲存結構。

資料結構中,怎樣以二叉連結串列為儲存結構,分別寫出求二叉樹結點總數及葉子總數的演算法?

10樓:匿名使用者

同學,你們老師和我們老師留的作業是一模一樣的阿,我有現成的做好了的程式,除錯成功。這個程式的難點就在於這種很彆扭的輸入形式,所以我為它設計了一個結構體形式存放輸入內容,再將它轉化成了線性結構。

#include

#include

struct inform /*建立輸入資訊結構體inform*/

;struct leafnode /*建立葉子節點結構體*/

;void print(inform* ps, int n);

void judge ( inform* ps );

leafnode* creatree(); /*宣告二叉樹的建立函式*/

void preorder (leafnode* t); /*宣告先序遍歷函式*/

void inorder (leafnode* t); /*宣告中序遍歷函式*/

void postorder (leafnode* t); /*宣告後序遍歷函式*/

char a[100];

int k=1;

int s=0;

inform *p;

void main()

a[0]= p->data;

judge ( p1 ); /*用遞迴演算法將輸入資料資訊轉為線性字串*/

cout

else

if ((ps->signr) == 0)

else

}leafnode* creatree() /*建立二叉樹函式*/

else

return t;

} /*先序遍歷的遞迴函式*/

void preorder (leafnode* t)

}/*中序遍歷的遞迴函式*/

void inorder (leafnode* t)

}/*後序遍歷的遞迴函式*/

void postorder (leafnode* t)}

11樓:易xiao萱

//求葉子節點數

#include

using namespace std;

int n=0;//全域性變數求葉子總數

template

struct binode

;template

class bitree

int preorder()

private:

binode*root;

int count;

binode*creat(binode*bt);

int preorder(binode*bt);

};template

int bitree::preorder(binode*bt)return n;

}template

binode*bitree::creat(binode*bt)return bt;

}int main()

;template

class bitree

int preorder()

private:

binode*root;

int count;

binode*creat(binode*bt);

int preorder(binode*bt);

};template

int bitree::preorder(binode*bt)return n;

}template

binode*bitree::creat(binode*bt)return bt;

}int main()

12樓:蔡成棟

先設計了一個結構體形式int n; cout<<"請輸入二叉樹內容:第一行為節點總數n ,後面的n行是節點,謝謝

13樓:匿名使用者

int countnode (btnode *t) //節點總數

void countleaf (btnode *t) //葉子節點總數}

14樓:匿名使用者

int jiedian(btnode *b)//節點總數

int yezi(btnode *b)//葉子總數

c語言中.二叉樹的順序儲存結構和二叉連結串列,三叉連結串列儲存結構各自的優缺點及適用場合.以及2叉樹的順序儲存結

15樓:匿名使用者

鏈式結構優點bai都是便

du於定址,二叉連結串列缺點zhi結構性開銷隨著數dao據結構的回規模變大而答變大(尤其是葉子節點都有2個null,即損失2*sizeof(elemtype*))

線性結構優點沒有結構性開銷,缺點個人感覺是插入和刪除不夠方便?

試用場合估計取決問題規模大小,即空間複雜度和時間複雜度

兩個相互轉化很簡單,只需明白的就是順序儲存中:

當前節點的父節點parent(currentpos) = (currentpos - 1) / 2 取下界

左孩子left(currentpos) = 2*currentpos + 1

右孩子right(currentpos) = 2*currentpos + 2

左兄弟 = currentpos - 1

右兄弟 = currentpos + 1

轉換時只需講鏈式儲存結構的資料域的資料拷貝到順序儲存結構對應的位置即可

假設以二叉連結串列作為二叉樹的儲存結構,試編寫求樹的高度的演算法

int length bitree t bitree find bitree t,elemtype x 該函式返回給定值的結點的指標 易xiao萱 include using namespace std template struct binode template class bitree voi...

為什麼n各節點的的二叉連結串列中有n 空鏈域

假面 因為n個節點有2n個指標 又因為n個節點中有n 1條邊 除了頭結點沒有邊,其餘節點都有一個父節點,相當於都有1條邊,共n 1條 剩下的空鏈域就是2n n 1 n 1,即n 1個空指標以二叉連結串列作為樹的儲存結構。連結串列中結點的兩個鏈域分別指向該結點的第一個孩子結點和下一個兄弟結點。 神可翔...

平衡二叉樹是什麼,什麼是平衡二叉樹

八卦氣質 簡單說就是平衡二叉排序樹,也就是首先是二叉排序樹,然後還是平衡的。可以這樣理解 它要麼是一 棵空樹,要麼是它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹 什麼是 理想平衡二叉樹 科科科科少 若二叉樹有h層,上面h 1層都是滿的,第h層的結點不是集中存放在第h層...