• <video id="abmqw"><input id="abmqw"></input></video>
  • <strong id="abmqw"><noscript id="abmqw"></noscript></strong>
  • <i id="abmqw"><sub id="abmqw"></sub></i>
      <video id="abmqw"></video>
      <output id="abmqw"></output>

    1. <video id="abmqw"><ins id="abmqw"><table id="abmqw"></table></ins></video>

      <wbr id="abmqw"><input id="abmqw"></input></wbr>
    2. <thead id="abmqw"><span id="abmqw"></span></thead>
    3. 數(shù)據(jù)結構入門-零C基礎者適用(ZZ)
      查看(1536) 回復(1)
      lyh2006
      • 積分:1982
      • 注冊于:
      發(fā)表于
      樓主
      很多朋友抱怨說嚴蔚敏的書很難,復習效果不理想。我現(xiàn)在一面在講大家要耐心,要多查多問,而轉過頭來看到那些符號,想起自己當初C語言60分的成績,初學數(shù)據(jù)結構的茫然,一步一步爬過來的辛苦,于是有了寫個數(shù)據(jù)結構入門的想法,但愿對剛剛入門C語言基礎不好和大跨考的朋友們有所幫助,數(shù)據(jù)結構復習已經進入正常軌道的朋友可以飄過。
      我重新審視嚴書,概念與文字描述的內容都是易懂的,而算法與程序往往是卡住我們的地方。我試著解釋每個符號的含義,C語言的基礎知識點,圖論中的難點,等等。但應該很少會涉及概念性的知識點。

      本節(jié)主要講了結構體定義的N種不同寫法,類型定義符typdef的用法,引用機制。

      P9頁例1-6

      在C語言中,最簡單的結構體是這樣的:
      復制內容到剪貼板
      代碼:
      struct ADT
      {
          int x,y;
      };
      其中ADT是結構的名稱,x和y是結構體的數(shù)據(jù)成員,注意{}后面的分號,這個是不能忘掉的。
      現(xiàn)在添加一個成員函數(shù)(這實際上是C++的內容),即數(shù)據(jù)結構中所謂的基本操作,如下:
      復制內容到剪貼板
      代碼:
      struct ADT
      {
          int x,y;
          void x_dayu_y()
          {
              if(x>y)
                  printf("x>y
      ");
              else
                  printf("x<=y
      ");
          };
      };
      關于函數(shù)和if..else…語句的知識請參閱C語言課本,這個不用解釋的吧。下面給出完整的程序,來描述這個結構是如何被使用的。當我說到“完整的程序”的時候,你完全可以在VC++6.0上來運行它。
      復制內容到剪貼板
      代碼:
      #include<stdio.h>

      struct ADT
      {
          int x,y;
          void x_dayu_y()
          {
              if(x>y)
                  printf("x>y
      ");
              else
                  printf("x<=y
      ");
          };
      };

      int main()
      {
          int a;
          a=1;
          ADT adt; // 定義一個結構體變量,請區(qū)別:結構體變量adt的類型是結構體ADT
          adt.x=1; // 賦值
          adt.y=2;
          adt.x_dayu_y(); // 基本操作
          return 0;
      }
      結構體的知識暫時介紹這些,對于理解例1-6的結構已經夠用了。
      在此強調一點,嚴書上的程序都是偽代碼描述,完全COPY到程序里是肯定不能執(zhí)行的。
      復制內容到剪貼板
      代碼:
      ADT Triplet
      {
          InitTriplet(&T,v1,v2,v3)
          ……
      }ADT Triplet
      ADT Triplet可以理解為結構體名稱,ADT即為書中前文提到的Abstract Data Type,而Triplet即為三元組,函數(shù)InitTriplet(&T,v1,v2,v3),此外偽代碼并未指明返回值,需要解釋一下的是符號&的含義,&在C++中表示引用,完整的程序如下:
      復制內容到剪貼板
      代碼:
      #include<stdio.h>

      void f(int &a,int b)
      {
          a=100;
          b=100;
      }

      int main()
      {
          int a=1,b=1;
          f(a,b);
          printf("%d %d
      ",a,b);
          return 0;
      }

      lyh2006
      • 積分:1982
      • 注冊于:
      發(fā)表于
      沙發(fā)
      實際上函數(shù)f執(zhí)行后,a=100,b=1,這就是引用符&的作用。實際上,在C語言中,&是地址符,C中的地址與指針的傳遞過程過于復雜,不作解釋以免添亂,而這也正是C++中引入引用機制的原因。
      實際上這個例題很簡單,選擇它只是為了引出結構體和引用機制的知識點,如果還有需要解釋的地方,請告訴我!

      P10頁(1)—(11)
      (1)
      復制內容到剪貼板
      代碼:
      #define TRUE 1
      命令define的詳細作用請參閱C語言課本,此處只作簡單說明:
      #define TRUE 1的效果是,在預編譯的時候,程序中所有的“TRUE”都被機械的替換為1,1代表真值。(在控制臺程序中TRUE不被支持,而在windows編程中TRUE與true等同。)

      類型定義符typedef,詳細請參閱C語言課本。
      復制內容到剪貼板
      代碼:
      typedef int Status;
      定義一個變量時,Status a;與int a;的效果是相同的,類型定義符typedef只是為了使用上的方便,在windows編程中你會見到大量的類型定義。

      下面請注意了,講到數(shù)據(jù)結構嚴書中經常會見到的結構體定義方法。

      如下面這個使用了類型定義符的結構體定義:
      復制內容到剪貼板
      代碼:
      typedef struct node
      {
          int x,y;
      }Point,*lPoint;
      其核心實際上就是前面已經講過的
      復制內容到剪貼板
      代碼:
      struct node
      {
          int x,y;
      };
      只不過把名稱ADT換成了node。
      這里typedef的作用:
      將類型struct node{}重定義為Point;
      將類型struct node {}*重定義為lPoint;(typedef struct node{}* lPoint
      注意此處Point與lPoint的名稱不能相同,前者是結構體名稱,后者是結構體指針名稱。
      在此處,可以省略struct后面的結構體名稱node,寫成如下形式:
      復制內容到剪貼板
      代碼:
      struct
      {
          int x,y;
      };
      下面是完整的程序,來描述結構體是如何被使用的。
      復制內容到剪貼板
      代碼:
      #include<stdio.h>
      #include<stdlib.h>

      typedef struct
      {
          int x,y;
      }Point,*lPoint;

      int main()
      {
          Point a;
          a.x=1; // e使用結構體變量時用的是“.”
          a.y=1;
          lPoint b; // 定義結構體指針
          b=(lPoint)malloc(sizeof(Point)); // 要給指針分配內存
          b->x=1; // 使用指針時用的是“->”
          b->y=1;
          Point* c; // 與上面定義結構體指針是一回事,寫法不一樣而已
          c=(Point*)malloc(sizeof(Point));
          c->x=1;
          c->y=1;
          return 0;
      }
      書中還會看到:
      復制內容到剪貼板
      代碼:
      typedef struct node
      {
          int x,y;
          struct node* next;
      }Point,*lPoint;
      這里的node不能省略,其余不再做過多的解釋。有關指針與內存分配的知識點,將在以后章節(jié)中講到。

      嚴書從(2)到(11)是把C語言的知識簡單帶過

      分享到:
      lyh2006
      • 積分:1982
      • 注冊于:
      發(fā)表于
      3樓
      實際上函數(shù)f執(zhí)行后,a=100,b=1,這就是引用符&的作用。實際上,在C語言中,&是地址符,C中的地址與指針的傳遞過程過于復雜,不作解釋以免添亂,而這也正是C++中引入引用機制的原因。
      實際上這個例題很簡單,選擇它只是為了引出結構體和引用機制的知識點,如果還有需要解釋的地方,請告訴我!

      P10頁(1)—(11)
      (1)
      復制內容到剪貼板
      代碼:
      #define TRUE 1
      命令define的詳細作用請參閱C語言課本,此處只作簡單說明:
      #define TRUE 1的效果是,在預編譯的時候,程序中所有的“TRUE”都被機械的替換為1,1代表真值。(在控制臺程序中TRUE不被支持,而在windows編程中TRUE與true等同。)

      類型定義符typedef,詳細請參閱C語言課本。
      復制內容到剪貼板
      代碼:
      typedef int Status;
      定義一個變量時,Status a;與int a;的效果是相同的,類型定義符typedef只是為了使用上的方便,在windows編程中你會見到大量的類型定義。

      下面請注意了,講到數(shù)據(jù)結構嚴書中經常會見到的結構體定義方法。

      如下面這個使用了類型定義符的結構體定義:
      復制內容到剪貼板
      代碼:
      typedef struct node
      {
          int x,y;
      }Point,*lPoint;
      其核心實際上就是前面已經講過的
      復制內容到剪貼板
      代碼:
      struct node
      {
          int x,y;
      };
      只不過把名稱ADT換成了node。
      這里typedef的作用:
      將類型struct node{}重定義為Point;
      將類型struct node {}*重定義為lPoint;(typedef struct node{}* lPoint
      注意此處Point與lPoint的名稱不能相同,前者是結構體名稱,后者是結構體指針名稱。
      在此處,可以省略struct后面的結構體名稱node,寫成如下形式:
      復制內容到剪貼板
      代碼:
      struct
      {
          int x,y;
      };
      下面是完整的程序,來描述結構體是如何被使用的。
      復制內容到剪貼板
      代碼:
      #include<stdio.h>
      #include<stdlib.h>

      typedef struct
      {
          int x,y;
      }Point,*lPoint;

      int main()
      {
          Point a;
          a.x=1; // e使用結構體變量時用的是“.”
          a.y=1;
          lPoint b; // 定義結構體指針
          b=(lPoint)malloc(sizeof(Point)); // 要給指針分配內存
          b->x=1; // 使用指針時用的是“->”
          b->y=1;
          Point* c; // 與上面定義結構體指針是一回事,寫法不一樣而已
          c=(Point*)malloc(sizeof(Point));
          c->x=1;
          c->y=1;
          return 0;
      }
      書中還會看到:
      復制內容到剪貼板
      代碼:
      typedef struct node
      {
          int x,y;
          struct node* next;
      }Point,*lPoint;
      這里的node不能省略,其余不再做過多的解釋。有關指針與內存分配的知識點,將在以后章節(jié)中講到。

      嚴書從(2)到(11)是把C語言的知識簡單帶過

      分享到:
      lyh2006
      • 積分:1982
      • 注冊于:
      發(fā)表于
      4樓
      實際上函數(shù)f執(zhí)行后,a=100,b=1,這就是引用符&的作用。實際上,在C語言中,&是地址符,C中的地址與指針的傳遞過程過于復雜,不作解釋以免添亂,而這也正是C++中引入引用機制的原因。
      實際上這個例題很簡單,選擇它只是為了引出結構體和引用機制的知識點,如果還有需要解釋的地方,請告訴我!

      P10頁(1)—(11)
      (1)
      復制內容到剪貼板
      代碼:
      #define TRUE 1
      命令define的詳細作用請參閱C語言課本,此處只作簡單說明:
      #define TRUE 1的效果是,在預編譯的時候,程序中所有的“TRUE”都被機械的替換為1,1代表真值。(在控制臺程序中TRUE不被支持,而在windows編程中TRUE與true等同。)

      類型定義符typedef,詳細請參閱C語言課本。
      復制內容到剪貼板
      代碼:
      typedef int Status;
      定義一個變量時,Status a;與int a;的效果是相同的,類型定義符typedef只是為了使用上的方便,在windows編程中你會見到大量的類型定義。

      下面請注意了,講到數(shù)據(jù)結構嚴書中經常會見到的結構體定義方法。

      如下面這個使用了類型定義符的結構體定義:
      復制內容到剪貼板
      代碼:
      typedef struct node
      {
          int x,y;
      }Point,*lPoint;
      其核心實際上就是前面已經講過的
      復制內容到剪貼板
      代碼:
      struct node
      {
          int x,y;
      };
      只不過把名稱ADT換成了node。
      這里typedef的作用:
      將類型struct node{}重定義為Point;
      將類型struct node {}*重定義為lPoint;(typedef struct node{}* lPoint
      注意此處Point與lPoint的名稱不能相同,前者是結構體名稱,后者是結構體指針名稱。
      在此處,可以省略struct后面的結構體名稱node,寫成如下形式:
      復制內容到剪貼板
      代碼:
      struct
      {
          int x,y;
      };
      下面是完整的程序,來描述結構體是如何被使用的。
      復制內容到剪貼板
      代碼:
      #include<stdio.h>
      #include<stdlib.h>

      typedef struct
      {
          int x,y;
      }Point,*lPoint;

      int main()
      {
          Point a;
          a.x=1; // e使用結構體變量時用的是“.”
          a.y=1;
          lPoint b; // 定義結構體指針
          b=(lPoint)malloc(sizeof(Point)); // 要給指針分配內存
          b->x=1; // 使用指針時用的是“->”
          b->y=1;
          Point* c; // 與上面定義結構體指針是一回事,寫法不一樣而已
          c=(Point*)malloc(sizeof(Point));
          c->x=1;
          c->y=1;
          return 0;
      }
      書中還會看到:
      復制內容到剪貼板
      代碼:
      typedef struct node
      {
          int x,y;
          struct node* next;
      }Point,*lPoint;
      這里的node不能省略,其余不再做過多的解釋。有關指針與內存分配的知識點,將在以后章節(jié)中講到。

      嚴書從(2)到(11)是把C語言的知識簡單帶過

      分享到:
      回復話題
      上傳/修改頭像

      美國的貨幣名稱是什么?

      考研論壇提示:
      1、請勿發(fā)布個人聯(lián)系方式或詢問他人聯(lián)系方式,包括QQ和手機等。
      2、未經允許不得發(fā)布任何資料出售、招生中介等廣告信息。
      3、如果發(fā)布了涉及以上內容的話題或跟帖,您在考研網(wǎng)的注冊賬戶可能被禁用。

      網(wǎng)站介紹 | 關于我們 | 聯(lián)系方式 | 廣告業(yè)務 | 幫助信息
      ©1998-2015 ChinaKaoyan.com Network Studio. All Rights Reserved.

      中國考研網(wǎng)-聯(lián)系地址:上海市郵政信箱088-014號 郵編:200092 Tel & Fax:021 - 5589 1949 滬ICP備12018245號

      国产人片18禁免费看片_1024国产精品免费观看_一级特黄少妇自慰AAA_欧美欧美午夜AⅤ在线观看
    4. <video id="abmqw"><input id="abmqw"></input></video>
    5. <strong id="abmqw"><noscript id="abmqw"></noscript></strong>
    6. <i id="abmqw"><sub id="abmqw"></sub></i>
        <video id="abmqw"></video>
        <output id="abmqw"></output>

      1. <video id="abmqw"><ins id="abmqw"><table id="abmqw"></table></ins></video>

        <wbr id="abmqw"><input id="abmqw"></input></wbr>
      2. <thead id="abmqw"><span id="abmqw"></span></thead>
      3. 亚洲欧美高清在线观 | 亚洲久操中文字幕 | 亚洲视频一区二区 | 日日狠狠久久偷偷色综合 | 亚洲中文字幕高清有码在线 | 亚洲国产综合在线91 |