資料結構 之 鍊錶 樹

2021-10-23 06:10:35 字數 2225 閱讀 7430

鍊錶

typedef

struct lnode

lnode;

lnode* p =

(lnode)

malloc

(sizeof

(lnode));

p->next=

null

;//c++

class

lnode

;lnode* p =

new lnode;

//靜態鍊錶,下標代表位址,陣列值代表data

typedef

struct

lnode;

lnode nodes[maxsize]

;

鍊錶操作
//頭插法

void

headinsert

(lnode* head,

int data)

//尾插法

void

tailinsert

(lnode* head,

int data)

二叉樹
typedef

struct btnode

btnode;

//先序遍歷

void

preorder

(btnode *p)

}//中序遍歷

void

inorder

(btnode *p)

}//後續遍歷

void

postorder

(btnode *p)

}//層次遍歷

//#include

void

level

(btnode* root)

cout <<

"end"

<< endl;

}}

typrdef struct

tnode;

tnode nodes[maxsize]

;

排序二叉樹

排序二叉樹,建樹的時候,先查詢插入的位置,且都是插入在葉子結點。

刪除結點時,從要刪除的結點處,往右掃瞄乙個結點,然後往左掃瞄,直到為空。將要替換的結點和最後掃瞄結束時的結點,交換位置後,刪除要刪除的結點,這樣不會破壞排序二叉樹的結構。

vector<

int> a;

void

insert

(node*

& root,

int a)

//將a插在二叉排序數合適的位置

}node*

creatroot

(int point)

//建立一棵二叉排序數

return root;

}

平衡二叉樹

它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。

####### pat 1066

#include

using

namespace std;

typedef

struct btnode

btnode;

btnode *

rotatel

(btnode *root)

//左旋

btnode *

rotater

(btnode *root)

//右旋

btnode *

rotatelr

(btnode *root)

//左右型

btnode *

rotaterl

(btnode *root)

//右左型

intgetheight

(btnode *root)

void

insert

(btnode *

&root,

int data)

//邊建樹,邊調整

else

if(data < root-

>data)

else

}int

main()

cout << root-

>data;

return0;

}

資料結構 表之煉表

頭插法建立 尾插法建立 顯示 銷毀 include include using namespace std typedef int elemtype typedef struct lnode linklist void createlinklistf linklist l,elemtype a,in...

資料結構之鍊錶

頭結點 第乙個有效結點之前的那個結點 頭結點並不存有效資料 加頭結點的目的主要是為了方便對鍊錶的操作 頭指標 指向頭結點的指標變數 尾指標 指向尾節點的指標變數 如果希望通過乙個函式對鍊錶進行處理,只需要乙個引數 頭指標 首先要定義乙個單鏈表儲存結構 然後建立乙個空表,即初始化,我寫的這個提前設定好...

資料結構之鍊錶

鍊錶是一種基本的資料結構型別,它由乙個個結點組成。每乙個結點包括乙個資料的儲存和乙個指向下乙個結點的引用。在這個定義中,結點是乙個可能含有任意型別資料的抽象實體,它所包含的指向結點的應用顯示了它在構造鍊錶之中的作用。和遞迴程式一樣,遞迴資料結構的概念一開始也令人費解,但其實它的簡潔性賦予了它巨大的價...