這一篇包含了資料結構從線性表到樹的大部分基本操作以及一些典例(是資料結構上機考試前花了一下午時間寫的)
#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 函式的幾個引數 位置引數 預設引數 可變引數 關鍵字引數 命名關鍵字引...