今天特別的興奮,起床也起得特別的早。在走之前我把電腦開了,那當然是為了做服務器,我不知道我開學后能不能夠這樣做,因為家里的一些因素。不過只要能為大家服務我已經很開心了,而且也一種強激的幸福感,這種幸福并不是一般的家庭幸福。我為堅持做下去的,我也常常問一些網友關于這件事,他們都說只有你自己可以就行了,他們都支持我堅持做下去。好吧,說遠了離題了,我說說今天的補課吧。 今天的課程也令我吃了一驚,是講數據結構里的樹。為什么隊列和堆棧都沒有講就直接講樹呢?會不會太快了一點,而且我們剛放完假有些人都沒有集中精神到課堂來。不過我會相信老師的選擇的,應該有他的理由。那么就來講講樹的一些基本概念,大家都知道樹是數據結構里的非線性結構之一,和之前說的鏈表是完全不同的,鏈表就只有前驅和后繼結點,但樹就不是了,他可以有很多的結點,稱為分支結點,而且他的分支結點又可以有分支結點。因為樹接觸到的概念太多了,只好自己看一下書才行。樹運用得很廣范,像我們操作系統里文件管理就是了,多級的目錄。二級目錄就像樹的子樹,而且子樹里可能還有很多的子樹,越往下就越多級。 我們來試試定義一個樹的結構,一般樹都分得很隨意,所有我們這里也隨便畫一個樹來說一下?磮D第十三天圖一 ![]() struct tree { int data; struct tree *next; /*右兄弟結點*/ struct tree *pre; /*左兄弟結點*/ struct tree *up; /*父結點*/ struct tree *down; /*子結點*/ }; 下面來看看如何建立一棵樹。 struct tree *p,*r; r=(struct tree *)malloc(sizeof(struct tree)); /*建立根結點空間*/ r->data=3; /*根結點賦值*/ r->next=r->pre=r->up=NULL; p=(struct tree *)malloc(sizeof(struct tree)); /*建立第二個結點*/ r->down=p; /*根結點的子結點連向新的子結點*/ p->data=5; /*子結點賦值*/ p->pre=NULL; p->next=(struct tree *)malloc(sizeof(struct tree)); p->next->data=2; p->next->pre=p; : : : 因為結點多而無規律性,所有這種建立方法是不能采用的,現在只是拿出來研究一下一棵樹是如何建立起來的。 現在說說另一種樹“二叉樹”。因為二叉樹與一般的樹結構比較,二叉樹在結構上更規范和更有確定性,因此,應用也比樹更為廣泛。二叉樹與樹不同,首先二叉樹可以為空,空的二叉樹沒有結點;另外,在二叉樹中,結點的子樹是有序的,分左、右兩棵子二叉樹。 void insert(btree *b,btree *s) |
文章來源于領測軟件測試網 http://www.kjueaiud.com/