資料結構作業大合集

2021-09-25 04:34:41 字數 3755 閱讀 7168

這一篇包含了資料結構從線性表到樹的大部分基本操作以及一些典例(是資料結構上機考試前花了一下午時間寫的)

#include

#include

#include

typedef

struct binode

binode,

*bitree;

intinitbitree

(bitree &l)

/*遞迴建立二叉樹*/

void

createbitree

(bitree &l)

}/*遞迴遍歷*/

void

dispbitree

(bitree l)

}/*佇列*/

typedef

struct squeue

squeue;

intinitqueue

(squeue *s)

intenqueue

(squeue *s,bitree t)

bitree gettop

(squeue s)

bitree dequeue

(squeue *s)

/*讀入邊的建立二叉樹*/

void

createbitree

(bitree &t)

if(flag==

'0')

q->lchild=p;

else

q->rchild=p;

}scanf

("%c %c %c\n"

,&fa,

&ch,

&flag);}

}/*二叉樹的複製*/

void

copybitree

(bitree &t,bitree &p)

}/*根據先序遍歷和中序遍歷建立二叉樹*/

void

bianlicreate

(bitree &t,

char pre,

char in,

int prel,

int prer,

int inl,

int inr)

t=(bitree)

malloc

(sizeof

(binode));

t->data=in[i]

; t->lchild=t->rchild=

null

;int len;

len=i-inl;

if(ibianlicreate

(t->rchild,pre,in,len+prel+

1,prer,i+

1,inr);if

(i>inl)

bianlicreate

(t->lchild,pre,in,prel+

1,prel+len,inl,i-1)

;}/*表示式二叉樹*/

typedef

struct snode

snode;

typedef

struct stack

stack;

intinitsnode

(snode *s)

intinitstack

(stack *s)

intensnode

(snode *s,

char e)

char

desnode

(snode *s)

intenstack

(stack *s,bitree e)

bitree destack

(stack *s)

char

gettop

(snode s)

bitree gettop

(stack s)

intlevel

(char e)

bitree biaodashi

(char data)

desnode

(&s)

;break

;case

'+':

case

'-':

case

'*':

case

'/':

case

'#':

e1=gettop

(s);

while

(level

(e1)

>

level

(e))

e1=gettop

(s);

}ensnode

(&s,e)

;break

;default

: t=

(bitree)

malloc

(sizeof

(binode));

t->data=e;

t->lchild=t->rchild=

null

;enstack

(&p,t)

;break;}

e=data[

++i];}

t=destack

(&p)

;return t;

}/*任務書遍歷*/

typedef

struct snode

snode;

typedef

struct

rensnode;

intinitrensnode

(rensnode *s)

intenrensnode

(rensnode *s,snode e)

snode derensnode

(rensnode *s)

void

renwushu

(bitree t)

e.data=e.data;

e.task=0;

enrensnode

(&s,e);if

(e.data->lchild)}}

}/*路徑分析遍歷*/

typedef

struct

lunsnode;

intinitlunsnode

(lunsnode *s)

intenlunsnode

(lunsnode *s,bitree e)

bitree delunsnode

(lunsnode *s)

void

lunjing

(bitree t)}}

/*建立孩子兄弟鍊錶建立樹*/

typedef

struct snode

tree,

*tree;

typedef

struct queue

squeue;

intinitqueue

(squeue *s)

intenqueue

(squeue *s,tree e)

tree dequeue

(squeue *s)

tree gettop

(squeue s)

void

createtree

(tree &t)

if(q->firstchild==

null

)else

}scanf

("%c%c"

,&fa,

&ch);}

}void

disptree

(tree t)

}int

main()

資料結構模板合集

線段樹lazy操作模板 區間修改,區間查詢 class segment tree lazy inline void add int p,int v,int t inline void pushdown int p,int l,int r public inline void build tree i...

資料結構作業

一,思維導圖 二,概念筆記 1,在計算時間複雜度的時候一般有 o 1 2 n 2,在計算平均時間複雜度時對p i t i 求和,其中p i 是概率,t i 是每個i的時間複雜度。3,儲存密度等於節點中個元素所佔的儲存量除以結點所佔的儲存量,儲存密度越大儲存空間的利用率越高。4,每次出棧只能出棧棧頂元...

作業大合集之函式 lamda表示式

python前置基礎再複習,內容包括函式等 注 函式的內容較為熟悉,因此本次為簡要筆記內容,部分暫時不放 函式的定義,def開頭的小模組,後面接函式名和圓括號 函式要有返回值,return,如果不帶return則預設返回none 函式的幾個引數 位置引數 預設引數 可變引數 關鍵字引數 命名關鍵字引...