在學生管理系統中經常需要使用陣列來進行物件的儲存,對於一些直觀的問題,陣列確實能夠大致的解決,但是陣列卻不能夠很好判斷越界問題以及對於資料成員數量的計算,而鍊錶能很好地解決這些問題。
ps:因為學生管理系統可能還需派生出其他的人員,所以使用繼承
class date
char* getname()const ;//返回它的值讓子類可以使用
char* getnumber()const ;
private:char *name;
char *num;
};
建立乙個基類date
在基類的基礎上派生出student類
char getclas() const;
void print()const
private:
char clas;
};
開始建立鍊錶,先建立節點類
class node
~node() //銷毀物件資料
node* getnext()const //返回節點
private:
student* itsdate;
node* itsnext;
};
鍊錶類
具有增,刪,查,顯示
class list
//建構函式賦初值
~list();//析構函式
void show();//列印所有數的值函式
int getcount()const //返回該鍊錶節點個數
void insert(student* pdate);//將該節點插入鍊錶
void delete(char* num);//刪除名為num的節點
student* find(char* num)const;//找到並列印num
private:
node* head;
int count;
};
鍊錶函式的實現
析構函式
list::~list()
增:採用頭插法插入節點
void list::insert(student* pdate)
else
刪:這裡使用名字進行刪除
void list::delete(char *num)//刪除名為num的
else
delete pnow;
pnow = null;
count--;
cout << "刪除成功" << endl;
return;
}else}}
}
查
student* list::find(char *name)const//找到並列印該值
}if (pn == null)//若為空則返回空
return null;
}
這裡的鍊錶基本功能已經具備,但是要進行學生管理系統還需要建立乙個選單類。
class menu:public list
;
函式的實現
void menu::run()
}break;
case 2:
cout << "請輸入您要刪除的學生編號:" << endl;
cin >> number;
delete(number);
cin.get();
break;
case 3:
cout << "請輸入要查詢的學生的名字" << endl;
cin >> name;
find(name);
break;
case 4:
cout << "該鍊錶共有" << getcount() << "個節點" << endl;
show();
break;
case 5:
quit = true;
break;
default: break;
} if (quit)
}}
記錄一下自己的血淚史,大致就是這樣吧,如果有什麼不足的地方請指出,我會改進的。 PTA 建立學生鍊錶
本題要求實現乙個將輸入的學生成績組織成單向鍊錶的簡單函式。void input 該函式利用scanf從輸入中獲取學生的資訊,並將其組織成單向鍊錶。鍊錶節點結構定義如下 struct stud node 單向鍊錶的頭尾指標儲存在全域性變數head和tail中。輸入為若干個學生的資訊 學號 姓名 成績 ...
c 鍊錶類建立使用
我們知道,陣列式計算機根據事先定義好的陣列型別與長度自動為其分配一連續的儲存單元,相同陣列的位置和距離都是固定的,也就是說,任何乙個陣列元素的位址都可乙個簡單的公式計算出來,因此這種結構可以有效的對陣列元素進行隨機訪問。但若對陣列元素進行插入和刪除操作,則會引起大量資料的移動,從而使簡單的資料處理變...
PTA 建立學生資訊鍊錶
題目鏈結 需要許可權 本題要求實現乙個將輸入的學生成績組織成單向鍊錶的簡單函式。函式介面定義 void input 該函式利用scanf從輸入中獲取學生的資訊,並將其組織成單向鍊錶。鍊錶節點結構定義如下 struct stud node 單向鍊錶的頭尾指標儲存在全域性變數head和tail中。輸入為...