代碼如下,我在重要部分做了注解:#include <iostream> using namespace std;
struct test { char name[10]; 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->name>>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)的位置
在create()函數(shù)內(nèi)部我們先寫成這樣: test *create() { test *ls;//節(jié)點(diǎn)指針 test *le;//鏈尾指針 ls = new test;//把ls指向動(dòng)態(tài)開辟的堆內(nèi)存地址 cin>>ls->name>>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)的位置
我們以上面的程序?yàn)榛A(chǔ),但為了我們方便學(xué)習(xí)刪除我們休整結(jié)構(gòu)體為 struct test { int number; float socre; test *next; }; number為唯一的編號(hào)每一個(gè)節(jié)點(diǎn)的。
更多內(nèi)容請看C/C++技術(shù)專題 電腦知識(shí)專題,或 完整代碼如下:#include <iostream> 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)的位置
今天的程序在昨天的基礎(chǔ)上做了進(jìn)一步的修改,可以避免刪除點(diǎn)找不到的情況,假如找不到刪除點(diǎn)就退出函數(shù)! #include <iostream> 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)存地址 cout<<"請輸入第一個(gè)節(jié)點(diǎn)number和節(jié)點(diǎn)score,輸入0.0跳出函數(shù)"<<endl; 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) {
int derror=1;//設(shè)置找不到的情況的條件,預(yù)先設(shè)置為真 test *check=head; while(check)//利用循環(huán)進(jìn)行查找 { if (check->number==number) { derror=0;//條件轉(zhuǎn)為假 } check=check->next;
int ierror=1;//設(shè)置找不到的情況的條件,預(yù)先設(shè)置為真 test *le; test *check=head; while(check)//利用循環(huán)進(jìn)行查找 { if (check->number==number) { ierror=0;//條件轉(zhuǎn)為假 }