/*用C語言鏈表寫壹個學生信息系統程序,要求輸出學生的學號,姓名,性別,學號,姓名,成績(添加,刪除,查詢,排序,平均)*/
# include & ltstdio.h & gt
# include & ltiostream & gt
# include & ltstring.h & gt
# include & ltstdlib.h & gt
使用命名空間std
const int n = 5;
/*
* nodeEntry:節點數據類型
* nodeADT:節點結構
* linkADT:鏈表結構
*/
typedef結構學生
{
int num
char name[30];
迷人的性愛;
float score 1;//語言
浮動分數2;//數學
浮動分數3;//英語
//struct學生* next
}學生;
typedef結構鏈接CDT {
nodeADT頭;
} * linkADT
/*
* InitLink:初始化鏈表
* CreateNode:創建節點
* AppendLink:添加數據
*/
nodeADT CreateNode(學生條目){
node ADT p =(node ADT)malloc(sizeof * p);
p->;entry=entry,p-& gt;next = 0;
返回p;
}
/*
SortLink:排序鏈表
//按學號排序
void SortLinkID(linkADT link) {
nodeADT pHead,pRear,p,TP;
如果(!鏈接)退貨;
for(pHead = link-& gt;head,pRear = 0;pHeadpHead = pHead-& gt;下壹個){
for (tp=pHead,p = pHead-& gt;接下來;p;tp=p,p = p-& gt;下壹個)?
if(pHead-& gt;entry.num & gt= p->;條目編號)
TP-& gt;next = p-& gt;接下來,p-& gt;next=pHead,pHead=p,p = tp
如果(!pRear)鏈接-& gt;head = pHead
else pRear-& gt;next = pHead
pRear = pHead
}
//按英語成績排序
void sort link English(link ADT link){
nodeADT pHead,pRear,p,TP;
如果(!鏈接)退貨;
for(pHead = link-& gt;head,pRear = 0;pHeadpHead = pHead-& gt;下壹個){
for (tp=pHead,p = pHead-& gt;接下來;p;tp=p,p = p-& gt;下壹個)?
if(pHead-& gt;entry.score3 & gt= p->;條目.得分3)
TP-& gt;next = p-& gt;接下來,p-& gt;next=pHead,pHead=p,p = tp
如果(!pRear)鏈接-& gt;head = pHead
else pRear-& gt;next = pHead
pRear = pHead
}
}
//按名稱的字典順序排序
void SortLinkName(linkADT link) {
nodeADT pHead,pRear,p,TP;
如果(!鏈接)退貨;
for(pHead = link-& gt;head,pRear = 0;pHeadpHead = pHead-& gt;下壹個){
for (tp=pHead,p = pHead-& gt;接下來;p;tp=p,p = p-& gt;下壹個)?
if(pHead-& gt;entry . name[0]& gt;= p->;entry.name[0])
TP-& gt;next = p-& gt;接下來,p-& gt;next=pHead,pHead=p,p = tp
如果(!pRear)鏈接-& gt;head = pHead
else pRear-& gt;next = pHead
pRear = pHead
}
}
//按名稱長度排序
void sort linkname length(link ADT link){
nodeADT pHead,pRear,p,TP;
如果(!鏈接)退貨;
for(pHead = link-& gt;head,pRear = 0;pHeadpHead = pHead-& gt;下壹個){
for (tp=pHead,p = pHead-& gt;接下來;p;tp=p,p = p-& gt;下壹個)?
if(strlen(pHead-& gt;entry . name)& gt;= strlen(p-& gt;entry.name))
TP-& gt;next = p-& gt;接下來,p-& gt;next=pHead,pHead=p,p = tp
如果(!pRear)鏈接-& gt;head = pHead
else pRear-& gt;next = pHead
pRear = pHead
}
循環鏈表和單壹鏈表是壹樣的。
是鏈式存儲結構,不同的是循環鏈表最後壹個節點的指針指向循環鏈表的第壹個節點或者頭節點,這樣就形成了壹個循環鏈。
循環鏈表的操作和單鏈表基本相同。區別如下:
1.建立循環鏈表時,最後壹個節點的指針必須指向頭節點,而不是像單鏈表那樣設置為NULL。這種情況也用於在最後壹個節點後插入新節點。
2.判斷是否到達表尾時,是判斷節點的鏈域值是否是頭節點。當鏈域值等於頭指針時,意味著已經到達表的末尾。而不是像單鏈表壹樣判斷鏈域值是否為空。
百度百科-鏈表