• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    程序員考試補課筆記-第十三天

    發布: 2007-5-26 13:51 | 作者: 未知 | 來源: 互聯網 | 查看: 19次 | 進入軟件測試論壇討論

    領測軟件測試網
      今天特別的興奮,起床也起得特別的早。在走之前我把電腦開了,那當然是為了做服務器,我不知道我開學后能不能夠這樣做,因為家里的一些因素。不過只要能為大家服務我已經很開心了,而且也一種強激的幸福感,這種幸福并不是一般的家庭幸福。我為堅持做下去的,我也常常問一些網友關于這件事,他們都說只有你自己可以就行了,他們都支持我堅持做下去。好吧,說遠了離題了,我說說今天的補課吧。

      今天的課程也令我吃了一驚,是講數據結構里的樹。為什么隊列和堆棧都沒有講就直接講樹呢?會不會太快了一點,而且我們剛放完假有些人都沒有集中精神到課堂來。不過我會相信老師的選擇的,應該有他的理由。那么就來講講樹的一些基本概念,大家都知道樹是數據結構里的非線性結構之一,和之前說的鏈表是完全不同的,鏈表就只有前驅和后繼結點,但樹就不是了,他可以有很多的結點,稱為分支結點,而且他的分支結點又可以有分支結點。因為樹接觸到的概念太多了,只好自己看一下書才行。樹運用得很廣范,像我們操作系統里文件管理就是了,多級的目錄。二級目錄就像樹的子樹,而且子樹里可能還有很多的子樹,越往下就越多級。

      我們來試試定義一個樹的結構,一般樹都分得很隨意,所有我們這里也隨便畫一個樹來說一下?磮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;
         :
         :
         :
      因為結點多而無規律性,所有這種建立方法是不能采用的,現在只是拿出來研究一下一棵樹是如何建立起來的。

      現在說說另一種樹“二叉樹”。因為二叉樹與一般的樹結構比較,二叉樹在結構上更規范和更有確定性,因此,應用也比樹更為廣泛。二叉樹與樹不同,首先二叉樹可以為空,空的二叉樹沒有結點;另外,在二叉樹中,結點的子樹是有序的,分左、右兩棵子二叉樹。
    二叉樹又是如何建立的呢?這里很簡單,因為二叉樹有其規律性,下面請看
      typedef struct bnode
      {
        int data;
        struct bnode *left,*right;
      }btree;

      void creat(btree *b)
      {
        int x;
        btree *s;
        b=NULL;
      do
      {
        scanf("%d",&x);
        s=(btree *)malloc(sizeof(btree));
        s->data=x;
        s->left=s->right=NULL;
        insert(b,s);
      }
    }

      void insert(btree *b,btree *s)
      {
        if(b==NULL) b=s;
        else if(s-data==b->data) return();
        else if(s-data<b->data) insert(b->left,s);
        else if(s-data>b->data) insert(b->right,s);
      }
      這條程序不單只建立了一個樹,而且還給排好了序(左小右大)。輸入相應的數值看看結果,如圖第十三天圖二。
      今天也就是這些了,還有得就是要多看些遞歸的程序,因為樹的建立和操作離不開遞歸。還有的就是大家做做如下一題,就是已知有一個無序的二叉樹,讓我們用中序遍歷排列成由大到小的程序。大家一齊起吧,寫好發答案到我的論壇上http://zhgpa.vicp.net或者E-mail:zhgpa@sohu.com多謝大家支持。


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>