少妇AV一区二区三区无|久久AV电影一区三|日本一级片黄色毛片|亚洲久久成人av在线久操|黄色视频在线免费看呀一区二区|综合精品视频精品久久久浪朝|亚洲午夜成人资源|欧美黄色一级片黑寡妇|内射无毛少妇特写|无码农村夜晚偷拍啪啪

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

時(shí)間: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為的編號每一個(gè)節(jié)點(diǎn)的。

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

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

   完整代碼如下:

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

   test *create()
   {
   test *ls;//節(jié)點(diǎn)指針
   test *le;//鏈尾指針
   ls = new test;//把ls指向動(dòng)態(tài)開辟的堆內(nèi)存地址
   cin>>ls->number>>ls->socre;
   head=NULL;//進(jìn)入的時(shí)候先不設(shè)置head指針指向任何地址,因?yàn)椴恢朗欠褚簧蟻砭洼斎雗ull跳出程序
   le=ls;//把鏈尾指針設(shè)置成剛剛動(dòng)態(tài)開辟的堆內(nèi)存地址,用于等下設(shè)置le->next,也就是下一個(gè)節(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)入鏈表的指針指向第一次動(dòng)態(tài)開辟的堆內(nèi)存地址
   }
   else
   {
   le->next=ls;//如果不是第一次進(jìn)入那么就把上一次的鏈尾指針的le->next指向上一次循環(huán)結(jié)束前動(dòng)態(tài)創(chuàng)建的堆內(nèi)存地址
   }
   le=ls;//設(shè)置鏈尾指針為當(dāng)前循環(huán)中的節(jié)點(diǎn)指針,用于下一次進(jìn)入循環(huán)的時(shí)候把上一次的節(jié)點(diǎn)的next指向上一次循環(huán)結(jié)束前動(dòng)態(tài)創(chuàng)建的堆內(nèi)存地址
   ls=new test;//為下一個(gè)節(jié)點(diǎn)在堆內(nèi)存中動(dòng)態(tài)開辟空間
   cin>>ls->number>>ls->socre;
   }
   le->next=NULL;//把鏈尾指針的next設(shè)置為空,因?yàn)椴还苋绾窝h(huán)總是要結(jié)束的,設(shè)置為空才能夠在循環(huán)顯鏈表的時(shí)候不至于死循環(huán)
   delete ls;//當(dāng)結(jié)束的時(shí)候最后一個(gè)動(dòng)態(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;
   }
   }