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

C/C++中結(jié)構(gòu)體(struct)知識點(diǎn)強(qiáng)化(三)

時間:2008-10-04 04:25:00   來源:無憂考網(wǎng)     [字體: ]
下面我們來說一下鏈表節(jié)點(diǎn)的刪除!

   我們以上面的程序?yàn)榛A(chǔ),但為了我們方便學(xué)習(xí)刪除我們休整結(jié)構(gòu)體為

   struct test
   {
   int number;
   float socre;
   test *next;
   };
   number為的編號每一個節(jié)點(diǎn)的。

   刪除的我就不多說了,里面重要部分有注解。

   特別注意deletel函數(shù)的參數(shù)意義,指針的引用在這里很重要,如果只是指針,或者只是應(yīng)用都是不行的,為什么仔細(xì)思考,很多知名的教材在這一問題上都很模糊,而且很多書還有錯誤,程序不錯,但思路是錯的,我這里特別不說,請大家仔細(xì)閱讀程序,如果還是有問題,可以回此帖,我會回答的。 來源:www.examda.com

   完整代碼如下:

   #include
   using namespace std;
   struct test
   {
   int number;
   float socre;
   test *next;
   };
   test *head;//創(chuàng)建一個全局的引導(dǎo)進(jìn)入鏈表的指針

   test *create()
   {
   test *ls;//節(jié)點(diǎn)指針
   test *le;//鏈尾指針
   ls = new test;//把ls指向動態(tài)開辟的堆內(nèi)存地址
   cin>>ls->number>>ls->socre;
   head=NULL;//進(jìn)入的時候先不設(shè)置head指針指向任何地址,因?yàn)椴恢朗欠褚簧蟻砭洼斎雗ull跳出程序
   le=ls;//把鏈尾指針設(shè)置成剛剛動態(tài)開辟的堆內(nèi)存地址,用于等下設(shè)置le->next,也就是下一個節(jié)點(diǎn)的位置
   while(ls->number!=0)//創(chuàng)建循環(huán)條件為ls->number的值不是null,用于循環(huán)添加節(jié)點(diǎn)
   {
   if(head==NULL)//判斷是否是第一次進(jìn)入循環(huán)
   {
   head=ls;//如果是第一次進(jìn)入循環(huán),那么把引導(dǎo)進(jìn)入鏈表的指針指向第一次動態(tài)開辟的堆內(nèi)存地址
   }
   else
   {
   le->next=ls;//如果不是第一次進(jìn)入那么就把上一次的鏈尾指針的le->next指向上一次循環(huán)結(jié)束前動態(tài)創(chuàng)建的堆內(nèi)存地址
   }
   le=ls;//設(shè)置鏈尾指針為當(dāng)前循環(huán)中的節(jié)點(diǎn)指針,用于下一次進(jìn)入循環(huán)的時候把上一次的節(jié)點(diǎn)的next指向上一次循環(huán)結(jié)束前動態(tài)創(chuàng)建的堆內(nèi)存地址
   ls=new test;//為下一個節(jié)點(diǎn)在堆內(nèi)存中動態(tài)開辟空間
   cin>>ls->number>>ls->socre;
   }
   le->next=NULL;//把鏈尾指針的next設(shè)置為空,因?yàn)椴还苋绾窝h(huán)總是要結(jié)束的,設(shè)置為空才能夠在循環(huán)顯鏈表的時候不至于死循環(huán)
   delete ls;//當(dāng)結(jié)束的時候最后一個動態(tài)開辟的內(nèi)存是無效的,所以必須清除掉
   return head;//返回鏈?zhǔn)字羔?
   }
   void showl(test *head)
   {
   cout<<"鏈?zhǔn)字羔?"< <
   while(head)//以內(nèi)存指向?yàn)閚ull為條件循環(huán)顯示先前輸入的內(nèi)容 來源:www.examda.com
   {
   cout< number<<"|"< socre<
   head=head->next;
   }
   }