国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

C/C++中結構體(struct)知識點強化(一)

時間:2008-10-04 04:26:00   來源:無憂考網     [字體: ]
為了進一部的學習結構體這一重要的知識點,我們今天來學習一下鏈表結構。

   結構體可以看做是一種自定義的數據類型,它還有一個很重要的特性,就是結構體可以相互嵌套使用,但也是有條件的,結構體可以包含結構體指針,但絕對不能在結構體中包含結構體變量。

   struct test
   {
   char name[10];
   float socre;
   test *next;
   };//這樣是正確的!
   struct test
   {
   char name[10];
   float socre;
   test next;
   };//這樣是錯誤的!

   利用結構體的這點特殊特性,我們就可以自己生成一個環(huán)環(huán)相套的一種射線結構,一個指向另一個。 來源:www.examda.com

   鏈表的學習不像想象的那么那么容易,很多人學習到這里的時候都會碰到困難,很多人也因此而放棄了學習,在這里我說,一定不能放棄,對應它的學習我們要進行分解式學習,方法很重要,理解需要時間,不必要把自己逼迫的那么緊,學習前你也得做一些最基本的準備工作,你必須具備對堆內存的基本知識的了解,還有就是對結構體的基本認識,有了這兩個重要的條件,再進行分解式學習就可以比較輕松的掌握這一節(jié)內容的難點。

   下面我們給出一個完整的創(chuàng)建鏈表的程序,不管看的懂看不懂希望讀者先認真看一下,想一想,看不懂沒有關系,因為我下面會有分解式的教程,但之前的基本思考一定要做,要不即使我分解了你也是無從理解的。

   代碼如下,我在重要部分做了注解:

   #include
   using namespace std;

   struct test
   {
   char name[10];
   float socre;
   test *next;
   };

   test *head;//創(chuàng)建一個全局的引導進入鏈表的指針

   test *create()
   {
   test *ls;//節(jié)點指針
   test *le;//鏈尾指針
   ls = new test;//把ls指向動態(tài)開辟的堆內存地址
   cin>>ls->name>>ls->socre;
   head=NULL;//進入的時候先不設置head指針指向任何地址,因為不知道是否一上來就輸入null跳出程序
   le=ls;//把鏈尾指針設置成剛剛動態(tài)開辟的堆內存地址,用于等下設置le->next,也就是下一個節(jié)點的位置

   while(strcmp(ls->name,"null")!=0)//創(chuàng)建循環(huán)條件為ls->name的值不是null,用于循環(huán)添加節(jié)點
   {
   if(head==NULL)//判斷是否是第一次進入循環(huán)
   {
   head=ls;//如果是第一次進入循環(huán),那么把引導進入鏈表的指針指向第一次動態(tài)開辟的堆內存地址
   }
   else
   {
   le->next=ls;//如果不是第一次進入那么就把上一次的鏈尾指針的le->next指向上一次循環(huán)結束前動態(tài)創(chuàng)建的堆內存地址
   }