版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
線性表中每個(gè)元素有唯一的前驅(qū)元素和后繼元素。2.3.1
單鏈表的定義1.鏈表概述1/552.3線性表的鏈?zhǔn)奖硎久總€(gè)物理結(jié)點(diǎn)增加一個(gè)指向后繼結(jié)點(diǎn)的指針域
單鏈表。每個(gè)物理結(jié)點(diǎn)增加一個(gè)指向后繼結(jié)點(diǎn)的指針域和一個(gè)指向前驅(qū)結(jié)點(diǎn)的指針域
雙鏈表。2/55學(xué)號(hào)姓名性別班號(hào)1張斌男99018劉麗女990234李英女990120陳華男990212王奇男990126董強(qiáng)男99025王萍女9901設(shè)計(jì)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)時(shí),每個(gè)邏輯元素用一個(gè)結(jié)點(diǎn)單獨(dú)存儲(chǔ),為了表示邏輯關(guān)系,增加指針域。線性表(a0,a1,…,ai,…,an-1
)映射邏輯結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)帶頭結(jié)點(diǎn)單鏈表示意圖a1a2an∧…L3/55typedefstructLNode//聲明單鏈表結(jié)點(diǎn)類型{inflistdata;
structLNode*next;//指向后繼結(jié)點(diǎn)}LinkNode;typedefstructinf{ intnum; charname[8];
charsex[4];
intglassno;}inflist;線性表(a0,a1,…,ai,…,an-1
)映射邏輯結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)帶頭結(jié)點(diǎn)雙鏈表示意圖a1an∧…La24/55順序表:需要平均移動(dòng)半個(gè)表的元素。鏈表:只需修改相關(guān)結(jié)點(diǎn)的指針域即可,這樣既方便又省時(shí)。插入或刪除操作5/55鏈表和順序表的比較順序表:具有隨機(jī)存取特性。鏈表:不具有隨機(jī)存取特性。6/55隨機(jī)存取特性(查找序號(hào)i的元素的時(shí)間為O(1))一般地,存儲(chǔ)密度越大,存儲(chǔ)空間的利用率就越高。顯然,順序表的存儲(chǔ)密度為1(100%),而鏈表的存儲(chǔ)密度小于1。存儲(chǔ)密度=結(jié)點(diǎn)數(shù)據(jù)本身占用的空間結(jié)點(diǎn)占用的空間總量a18個(gè)字節(jié)4個(gè)字節(jié)存儲(chǔ)密度=8/12=67%例如7/55存儲(chǔ)密度是指結(jié)點(diǎn)數(shù)據(jù)本身所占的存儲(chǔ)量和整個(gè)結(jié)點(diǎn)結(jié)構(gòu)中所占的存儲(chǔ)量之比,即:順序表:存儲(chǔ)密度高。鏈表:存儲(chǔ)密度相對(duì)較低。8/55存儲(chǔ)密度單鏈表中結(jié)點(diǎn)類型LinkNode的聲明如下:
typedefstructLNode
//聲明單鏈表結(jié)點(diǎn)類型{intdata;
structLNode*next;//指向后繼結(jié)點(diǎn)}
LinkNode;a9/552.3.2單鏈表上基本操作的實(shí)現(xiàn)a1a2an∧…第一個(gè)結(jié)點(diǎn)的操作和表中其他結(jié)點(diǎn)的操作相一致,無需進(jìn)行特殊處理。無論鏈表是否為空,都有一個(gè)頭結(jié)點(diǎn),因此空表和非空表的處理也就統(tǒng)一了。單鏈表增加一個(gè)頭結(jié)點(diǎn)的優(yōu)點(diǎn):帶頭結(jié)點(diǎn)單鏈表頭結(jié)點(diǎn)首結(jié)點(diǎn)尾結(jié)點(diǎn)10/55當(dāng)訪問過一個(gè)結(jié)點(diǎn)后,只能接著訪問它的后繼結(jié)點(diǎn),而無法訪問它的前驅(qū)結(jié)點(diǎn)。ab…p…p是指針,*p是p指向的結(jié)點(diǎn),為了簡(jiǎn)單,稱p指向的結(jié)點(diǎn)為p結(jié)點(diǎn)11/55單鏈表的特點(diǎn)插入操作:將值為x的新結(jié)點(diǎn)s插入到p結(jié)點(diǎn)之后。特點(diǎn):只需修改相關(guān)結(jié)點(diǎn)的指針域,不需要移動(dòng)結(jié)點(diǎn)。(1)插入結(jié)點(diǎn)操作12/551、插入結(jié)點(diǎn)和刪除結(jié)點(diǎn)操作abx…p…s
s->next=p->next
p->next=s插入操作語句描述如下:
s->next=p->next;
p->next=s;單鏈表插入結(jié)點(diǎn)演示p結(jié)點(diǎn)next的修改盡可能放在后面執(zhí)行13/55刪除操作:刪除p結(jié)點(diǎn)之后的一個(gè)結(jié)點(diǎn)。特點(diǎn):只需修改相關(guān)結(jié)點(diǎn)的指針域,不需要移動(dòng)結(jié)點(diǎn)。14/55(2)刪除結(jié)點(diǎn)操作abx…p…p->next=p->next->next刪除操作語句描述如下:
p->next=p->next->next;
free(p->next);為了釋放被刪除結(jié)點(diǎn),操作語句描述如下:
q=p->next;p->next=q->next;free(q);15/55單鏈表刪除結(jié)點(diǎn)演示16/55structstudent*createlist(){structstudent*head;structstudent*q;//指向當(dāng)前鏈表的最后一個(gè)結(jié)點(diǎn)structstudent*p;//新建結(jié)點(diǎn)intdata;head=(structstudent*)malloc(sizeof(structstudent));head->next=NULL;q=head;scanf("%d",&data);while(data!=9999){p=(structstudent*)malloc(sizeof(structstudent));//新建結(jié)點(diǎn)p->data=data;
p->next=q->next;q->next=p;//插入結(jié)點(diǎn)q=q->next;//保證q的邏輯完整性,q指向前鏈表的最后一個(gè)結(jié)點(diǎn)scanf("%d",&data);}returnhead;}整體建立單鏈表先考慮如何整體建立單鏈表。
a[0..n-1]帶頭結(jié)點(diǎn)的單鏈表L整體創(chuàng)建建立單鏈表的常用方法有兩種。17/552、整體建立單鏈表從一個(gè)空表開始,創(chuàng)建一個(gè)頭結(jié)點(diǎn)。依次讀取字符數(shù)組a中的元素,生成新結(jié)點(diǎn)將新結(jié)點(diǎn)插入到當(dāng)前鏈表的表頭上,直到結(jié)束為止。注意:鏈表的結(jié)點(diǎn)順序與邏輯次序相反。18/55(1)頭插法建表voidList_Head(LNode*&L)//頭插法{ LNode*s;intx; L=(LNode*)malloc(sizeof(LNode)); L->next=NULL; scanf("%d",&x); while(x!=9999){ s=(LNode*)malloc(sizeof(LNode)); s->data=x; s->next=L->next; L->next=s; scanf("%d",&x); }}19/55頭插法建表算法如下:注意:鏈表的結(jié)點(diǎn)順序與邏輯次序相同。從一個(gè)空表開始,創(chuàng)建一個(gè)頭結(jié)點(diǎn)。依次讀取字符數(shù)組a中的元素,生成新結(jié)點(diǎn)將新結(jié)點(diǎn)插入到當(dāng)前鏈表的表尾上,直到結(jié)束為止。增加一個(gè)尾指針r,使其始終指向當(dāng)前鏈表的尾結(jié)點(diǎn)20/55(2)尾插法建表voidList_Tail(LNode*&L)//尾插法
{ intx; L=(LNode*)malloc(sizeof(LNode)); LNode*s,*r=L; scanf("%d",&x); while(x!=9999){ s=(LNode*)malloc(sizeof(LNode)); s->data=x; r->next=s; r=s; scanf("%d",&x); } r->next=NULL;}21/55尾插法建表算法如下:(1)初始化線性表InitList(&L)
該運(yùn)算建立一個(gè)空的單鏈表,即創(chuàng)建一個(gè)頭結(jié)點(diǎn)。voidInitList(LinkNode*&L)
{L=(LinkNode*)malloc(sizeof(LinkNode));
//創(chuàng)建頭結(jié)點(diǎn)
L->next=NULL;}∧L22/553、線性表基本運(yùn)算在單鏈表上的實(shí)現(xiàn)
(2)銷毀線性表DestroyList(&L)
釋放單鏈表L占用的內(nèi)存空間。即逐一釋放全部結(jié)點(diǎn)的空間。
voidDestroyList(LinkNode*&L){
LinkNode*pre=L,*p=L->next;
//pre指向p的前驅(qū)結(jié)點(diǎn)
初始時(shí)L∧…prep23/55while(p!=NULL) //掃描單鏈表L
{free(pre); //釋放pre結(jié)點(diǎn)
pre=p; //pre、p同步后移一個(gè)結(jié)點(diǎn)
p=pre->next;
}
free(pre); //循環(huán)結(jié)束時(shí),p為NULL,pre指向尾結(jié)點(diǎn),釋放它}循環(huán)結(jié)束時(shí)L∧prep=NULL…24/55
(3)判斷線性表是否為空表ListEmpty(L)
若單鏈表L沒有數(shù)據(jù)結(jié)點(diǎn),則返回真,否則返回假。
boolListEmpty(LinkNode*L){
return(L->next==NULL);}∧L空表的情況25/55(4)求線性表的長(zhǎng)度ListLength(L)
返回單鏈表L中數(shù)據(jù)結(jié)點(diǎn)的個(gè)數(shù)。
intListLength(LinkNode*L){
intn=0;
LinkNode*p=L; //p指向頭結(jié)點(diǎn),n置為0(即頭結(jié)點(diǎn)的序號(hào)為0)
初始時(shí)L∧…pn=026/55while(p->next!=NULL)
{ n++; p=p->next;
}
return(n); //循環(huán)結(jié)束,p指向尾結(jié)點(diǎn),其序號(hào)n為結(jié)點(diǎn)個(gè)數(shù)}循環(huán)結(jié)束時(shí)L∧pn為結(jié)點(diǎn)個(gè)數(shù)…27/55
(5)輸出線性表DispList(L)
逐一掃描單鏈表L的每個(gè)數(shù)據(jù)結(jié)點(diǎn),并顯示各結(jié)點(diǎn)的data域值。
voidDispList(LinkNode*L){LinkNode*p=L->next; //p指向開始結(jié)點(diǎn)
while(p!=NULL) //p不為NULL,輸出p結(jié)點(diǎn)的data域
{printf("%d",p->data);
p=p->next; //p移向下一個(gè)結(jié)點(diǎn)
}
printf("\n");}L∧p…28/55
(6)求線性表L中位置i的數(shù)據(jù)元素GetElem(L,i,&e)
在單鏈表L中從頭開始找到第i個(gè)結(jié)點(diǎn),若存在第i個(gè)數(shù)據(jù)結(jié)點(diǎn),則將其data域值賦給變量e。29/55boolGetElem(LinkNode*L,inti,ElemType&e){intj=0;
LinkNode*p=L; //p指向頭結(jié)點(diǎn),j置為0(即頭結(jié)點(diǎn)的序號(hào)為0)
while(j<i&&p!=NULL)
{ j++; p=p->next;
}找第i個(gè)結(jié)點(diǎn)p循環(huán)結(jié)束時(shí)Lean∧…i…p30/55if(p==NULL) //不存在第i個(gè)數(shù)據(jù)結(jié)點(diǎn),返回false
returnfalse;
else
//存在第i個(gè)數(shù)據(jù)結(jié)點(diǎn),返回true
{e=p->data;
returntrue;
}}Lean∧…i…p算法的時(shí)間復(fù)雜度為O(n)
不具有隨機(jī)存取特性31/55(7)按元素值查找LocateElem(L,e)
在單鏈表L中從頭開始找第一個(gè)值域與e相等的結(jié)點(diǎn),若存在這樣的結(jié)點(diǎn),則返回位置,否則返回0。intLocateElem(LinkNode*L,ElemTypee){inti=1;
LinkNode*p=L->next; //p指向開始結(jié)點(diǎn),i置為1
while(p!=NULL&&p->data!=e)
{p=p->next; //查找data值為e的結(jié)點(diǎn),其序號(hào)為ii++;
}
循環(huán)結(jié)束時(shí)Le∧…i…p32/55Le∧…i…if(p==NULL)
//不存在元素值為e的結(jié)點(diǎn),返回0return(0);
else
//存在元素值為e的結(jié)點(diǎn),返回其邏輯序號(hào)i
return(i);}33/55
(8)插入數(shù)據(jù)元素ListInsert(&L,i,e)
先在單鏈表L中找到第i-1個(gè)結(jié)點(diǎn)p,若存在這樣的結(jié)點(diǎn),將值為e的結(jié)點(diǎn)結(jié)點(diǎn)s插入到其后。boolListInsert(LinkNode*&L,inti,ElemTypee){intj=0;
LinkNode*p=L,*s; //p指向頭結(jié)點(diǎn),j置為0
while(j<i-1&&p!=NULL)
{ j++; p=p->next;
}查找第i-1個(gè)結(jié)點(diǎn)L∧…i-1…p34/55if(p==NULL) //未找到第i-1個(gè)結(jié)點(diǎn),返回falsereturnfalse;
else
//找到第i-1個(gè)結(jié)點(diǎn)p,插入新結(jié)點(diǎn)并返回true
{ s=(LinkNode*)malloc(sizeof(LinkNode)); s->data=e; //創(chuàng)建新結(jié)點(diǎn)s,其data域置為e s->next=p->next; //將s插入到p之后
p->next=s; returntrue;
}}插入L∧…i-1…pes35/55(9)刪除數(shù)據(jù)元素ListDelete(&L,i,&e)
先在單鏈表L中找到第i-1個(gè)結(jié)點(diǎn)p,若存在這樣的結(jié)點(diǎn),且也存在后繼結(jié)點(diǎn),則刪除該后繼結(jié)點(diǎn)。
boolListDelete(LinkNode*&L,inti,ElemType&e){intj=0;
LinkNode*p=L,*q; //p指向頭結(jié)點(diǎn),j置為0
while(j<i-1&&p!=NULL) //查找第i-1個(gè)結(jié)點(diǎn)
{ j++; p=p->next;
}查找第i-1個(gè)結(jié)點(diǎn)L∧…i-1…p36/55if(p==NULL) //未找到第i-1個(gè)結(jié)點(diǎn),返回false returnfalse;
else
//找到第i-1個(gè)結(jié)點(diǎn)p
{q=p->next; //q指向第i個(gè)結(jié)點(diǎn)
if(q==NULL) //若不存在第i個(gè)結(jié)點(diǎn),返回false
returnfalse;
e=q->data;
p->next=q->next; //從單鏈表中刪除q結(jié)點(diǎn)
free(q); //釋放q結(jié)點(diǎn)
returntrue; //返回true表示成功刪除第i個(gè)結(jié)點(diǎn)
}}刪除第i個(gè)結(jié)點(diǎn)L∧…i-1…p37/55例2.3以單鏈表作為存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)和實(shí)現(xiàn)某班某門課程成績(jī)管理的完整程序。程序要求完成如下功能:(1)創(chuàng)建成績(jī)鏈表,學(xué)生數(shù)據(jù)包含學(xué)生的學(xué)號(hào)、姓名和成績(jī)。(2)可以在指定學(xué)號(hào)學(xué)生前插入學(xué)生成績(jī)數(shù)據(jù)。(3)可以刪除指定學(xué)號(hào)的學(xué)生數(shù)據(jù)。(4)可以計(jì)算學(xué)生的總數(shù)。(5)可以按學(xué)號(hào)和姓名查找學(xué)生。(6)可以顯示所有學(xué)生的成績(jī)。(7)可以把學(xué)生成績(jī)按從高到低的順序排列。38/554、單鏈表的應(yīng)用示例#include<string.h>#include<malloc.h>#include<stdlib.h>#include<stdio.h>
typedefstructStudent/*學(xué)生類型定義*/{intscore;/*成績(jī)*/charsno[5],sname[8];/*學(xué)號(hào),姓名*/}Student;
typedefstructNode/*結(jié)點(diǎn)類型定義*/{StudentstudentInfo;/*學(xué)生信息*/structNode*next;/*指向后繼元素的指針域*/}LinkList;
voiddisplay(LinkList*p)/*在屏幕上顯示一個(gè)學(xué)生的成績(jī)信息*/{printf("\n\n\nno\t\tname\t\tscore:");printf("\n%s",p->studentInfo.sno);/*打印學(xué)號(hào)*/printf("\t\t");printf("%s",p->studentInfo.sname);/*打印姓名*/printf("\t\t");printf("%-4d\n",p->studentInfo.score);/*打印成績(jī)*/}39/55voiddisplayAll(LinkList*L)/*在屏幕上顯示所有學(xué)生的成績(jī)信息*/{LinkList*p;p=L->next;printf("\n\n\nno\t\tname\t\tscore:");while(p){printf("\n%s",p->studentInfo.sno);/*打印學(xué)號(hào)*/printf("\t\t");printf("%s",p->studentInfo.sname);/*打印姓名*/printf("\t\t");printf("%-4d\n",p->studentInfo.score);/*打印成績(jī)*/p=p->next;}}
40/55LinkList*inputdata()/*輸入學(xué)生信息*/{LinkList*s=NULL;/*s是指向新建結(jié)點(diǎn)的指針*/charsno[5];/*存儲(chǔ)學(xué)號(hào)的數(shù)組*/printf("\n");printf("sno:");scanf("%s",sno);/*輸入學(xué)號(hào)*/if(sno[0]=='#')/*#結(jié)束輸入*/returns;s=(LinkList*)malloc(sizeof(LinkList));strcpy(s->studentInfo.sno,sno);if(strlen(sno)>4)/*如果sno字符個(gè)數(shù)大于等于5,因?yàn)樽址疀]有'\0'結(jié)束標(biāo)志,
在讀數(shù)據(jù)時(shí)將把姓名字符一起讀到sno數(shù)組,因此做了如下處理*/s->studentInfo.sno[4]='\0';printf("name:");scanf("%s",s->studentInfo.sname);/*輸入姓名*/printf("score:");scanf("%d",&s->studentInfo.score);/*輸入成績(jī)*/returns;}41/55LinkList*createTailList()/*以尾插法建立帶頭結(jié)點(diǎn)的學(xué)生信息單鏈表*/{LinkList*L,*s,*r;/*L頭指針,r尾指針,s是指向新建結(jié)點(diǎn)的指針*/L=(LinkList*)malloc(sizeof(LinkList));/*建立頭結(jié)點(diǎn),申請(qǐng)結(jié)點(diǎn)存儲(chǔ)空間*/r=L;/*尾指針指向頭結(jié)點(diǎn)*/printf("請(qǐng)輸入學(xué)生成績(jī),當(dāng)學(xué)號(hào)no為#時(shí)結(jié)束:\n");while(1)/*逐個(gè)輸入學(xué)生的成績(jī)*/{s=inputdata();if(!s)break;/*s為空時(shí)結(jié)束輸入*/r->next=s;/*把新結(jié)點(diǎn)插入到尾指針后*/r=s;/*r指向新的尾結(jié)點(diǎn)*/}r->next=NULL;/*尾指針的指針域?yàn)榭?/displayAll(L);/*顯示所有學(xué)生信息*/returnL;}
42/55voidlocateElemByno(LinkList*L,charch[5])/*按學(xué)號(hào)查找學(xué)生的算法*/{LinkList*p=L->next;/*從第一個(gè)結(jié)點(diǎn)開始查找*/while(p&&(strcmp(p->studentInfo.sno,ch)!=0))/*p不空且輸入學(xué)號(hào)與鏈表中學(xué)號(hào)不等*/p=p->next;if(!p){printf("\n\n\tDon'tfindthestudent!\n");}else{display(p);/*顯示查找到的學(xué)生信息*/}}
voidlocateElemByname(LinkList*L,charsname[8])/*按姓名查找學(xué)生的算法*/{LinkList*p=L->next;/*從第一個(gè)結(jié)點(diǎn)開始查找*/while(p&&(strcmp(p->studentInfo.sname,sname)!=0))p=p->next;if(!p){printf("\n\n\tDon'tfindthestudent!\n");}else{display(p);/*顯示查找到的學(xué)生信息*/}}
43/55intlengthList(LinkList*L)/*求學(xué)生總?cè)藬?shù)的算法*/{LinkList*p=L->next;/*p指向第一個(gè)結(jié)點(diǎn)*/intj=0;while(p){p=p->next;j++;}/*p所指的是第j個(gè)結(jié)點(diǎn)*/returnj;}
voidinsertElem(LinkList*L,charch[5])/*在指定學(xué)號(hào)前插入學(xué)生*/{LinkList*p,*s;p=L;/*從頭結(jié)點(diǎn)開始查找學(xué)號(hào)為ch的結(jié)點(diǎn)的前趨結(jié)點(diǎn)p*/while((p->next)&&(strcmp(p->next->studentInfo.sno,ch)!=0))p=p->next;s=inputdata();/*輸入欲插入學(xué)生信息*/s->next=p->next;p->next=s;}
44/55voiddeleteElem(LinkList*L,charch[5])/*刪除給定學(xué)號(hào)的學(xué)生信息的算法*/{LinkList*p,*q;p=L;while((p->next)&&(strcmp(p->next->studentInfo.sno,ch)!=0)){p=p->next;/*從頭結(jié)點(diǎn)開始查找學(xué)號(hào)為ch的結(jié)點(diǎn)的前趨結(jié)點(diǎn)p*/}if(!p->next)/*已經(jīng)掃描到表尾也沒找到*/{printf("\n\n\tDon'tfindthestudent!\n");}else{q=p->next;/*q指向?qū)W號(hào)為ch的結(jié)點(diǎn)*/printf("\n\ndeletedstudent'sinformation:");display(q);p->next=q->next;/*改變指針*/free(q);/*釋放q占用空間*/printf("\n\nallstudent'sinformation:");displayAll(L);}}
45/55voidinsertSort(LinkList*L)/*用直接插入排序思想把學(xué)生的成績(jī)按從高到低排序,結(jié)果保存在新有序鏈表中,原鏈表不變*/{LinkList*L1,*p;/*L1有序鏈表的表頭,p插入位置前結(jié)點(diǎn)*/LinkList*q,*s;/*q欲插入L1中的結(jié)點(diǎn)*/intlen;len=lengthList(L);L1=(LinkList*)malloc(sizeof(LinkList));/*建立頭結(jié)點(diǎn),申請(qǐng)結(jié)點(diǎn)存儲(chǔ)空間*/if(L->next)/*鏈表L非空*/{/*生成有序鏈表的第一個(gè)結(jié)點(diǎn)*/s=(LinkList*)malloc(sizeof(LinkList));/*建立結(jié)點(diǎn)*/strcpy(s->studentInfo.sno,L->next->studentInfo.sno);strcpy(s->studentInfo.sname,L->next->studentInfo.sname);s->studentInfo.score=L->next->studentInfo.score;s->next=NULL;L1->next=s;/*只有原單鏈表的第一個(gè)結(jié)點(diǎn)的有序鏈表L1*/q=L->next->next;/*原單鏈表的第二個(gè)結(jié)點(diǎn),q即要插入有序鏈表L1中的結(jié)點(diǎn)*/}else{printf("\nthestudentlinklistisempty\n");return;}//下頁續(xù)46/55while(q)/*鏈表L中有結(jié)點(diǎn)*/{p=L1;/*從鏈表L1的第一個(gè)結(jié)點(diǎn)開始比較*/while((p->next)&&(p->next->studentInfo.score>=q->studentInfo.score))p=p->next;/*查找插入位置前結(jié)點(diǎn)*//*生成欲插入有序鏈表中的結(jié)點(diǎn)*/s=(LinkList*)malloc(sizeof(LinkList));/*建立新結(jié)點(diǎn)*/strcpy(s->studentInfo.sno,q->studentInfo.sno);strcpy(s->studentInfo.sname,q->studentInfo.sname);s->studentInfo.score=q->studentInfo.score;if(!p->next)/*p是有序鏈表的最后一個(gè)結(jié)點(diǎn)*/{s->next=NULL;p->next=s;}else{s->next=p->next;p->next=s;}q=q->next;/*下一個(gè)欲插入有序鏈表的結(jié)點(diǎn)*/}/*while(!q)*/displayAll(L1);/*顯示生成的有序鏈表*/}
47/55intmain(){printf("=============================================\n\n");printf("帶頭結(jié)點(diǎn)的學(xué)生成績(jī)管理程序\n\n");printf("=============================================\n\n");LinkList*L;charch[5],sname[8];intb=1;while(b){inta;printf("\n\n");printf("<1>創(chuàng)建(帶頭尾插)<2>指定學(xué)號(hào)前插入<3>按學(xué)號(hào)刪除\n");printf("<4>計(jì)算學(xué)生總數(shù)<5>按學(xué)號(hào)查找<6>按姓名查找\n");printf("<7>顯示所有學(xué)生<8>成績(jī)排序<9>退出\n");printf("\n請(qǐng)輸入功能選項(xiàng):");scanf("%d",&a);switch(a){case1:L=createTailList();break;case2:printf("\n輸入欲在哪個(gè)學(xué)號(hào)前插入數(shù)據(jù):");scanf("%s",ch);insertE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)產(chǎn)品經(jīng)紀(jì)人崗前離崗考核試卷含答案
- 糕點(diǎn)面包烘焙工創(chuàng)新實(shí)踐能力考核試卷含答案
- 篩運(yùn)焦工崗前安全專項(xiàng)考核試卷含答案
- 涂料合成樹脂工安全演練評(píng)優(yōu)考核試卷含答案
- 汽車回收工安全生產(chǎn)能力強(qiáng)化考核試卷含答案
- 銀行內(nèi)部保密工作制度
- 酒店應(yīng)急預(yù)案及處置流程制度
- 酒店客房鑰匙卡安全保衛(wèi)制度
- 超市商品銷售及營(yíng)銷策略制度
- 流通單位食品安全培訓(xùn)
- 2025年航空行業(yè)空客智能制造報(bào)告
- 蒙牛乳業(yè)股份有限公司盈利能力分析
- 2025民航西藏空管中心社會(huì)招聘14人(第1期)筆試參考題庫(kù)附帶答案詳解(3卷合一版)
- (新教材)2026年人教版八年級(jí)下冊(cè)數(shù)學(xué) 21.2.1 平行四邊形及其性質(zhì) 課件
- 設(shè)備保養(yǎng)維護(hù)規(guī)程
- 《JBT 9778-2018 全喂入式稻麥脫粒機(jī) 技術(shù)條件》(2026年)實(shí)施指南
- 2025年東營(yíng)中考物理真題及答案
- DL-T+5860-2023+電化學(xué)儲(chǔ)能電站可行性研究報(bào)告內(nèi)容深度規(guī)定
- GB/T 46425-2025煤矸石山生態(tài)修復(fù)技術(shù)規(guī)范
- 反三違考試題及答案
- DB32-T 5201-2025 特種設(shè)備檢驗(yàn)檢測(cè)機(jī)構(gòu)黨建檔案管理規(guī)范
評(píng)論
0/150
提交評(píng)論