版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
常用數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算第三章1§3.1概述§3.2線性表§3.3棧與隊(duì)
§3.4樹(shù)與二叉樹(shù)§3.5
圖§3.6查找與排序目錄23.3
棧與隊(duì)3.3.1棧的結(jié)構(gòu)和運(yùn)算3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算3.3.3小結(jié)33.3.1棧的結(jié)構(gòu)和運(yùn)算棧的定義 是只能在表的一端進(jìn)行插入和刪除操作的 線性表。允許插入和刪除的一端稱為棧頂 (top),另一端稱為棧底(bottom)。
設(shè)棧s=(a1,a2,...,an),a1稱為棧底元素,
an稱為棧頂元素。 棧中元素按a1,a2,...,an次序進(jìn)棧,又按 an,...,a2,a1次序退棧。因此棧的操作特點(diǎn) 是:后進(jìn)先出(LIFO);n=0時(shí)稱為空棧。棧的存儲(chǔ)結(jié)構(gòu):順序和鏈?zhǔn)綏5姆N類:順序棧、鏈棧a1a2a3……an棧底棧頂進(jìn)棧出棧43.3.1棧的結(jié)構(gòu)和運(yùn)算堆棧的主要操作有:?創(chuàng)建空棧。?進(jìn)棧(push)操作:在棧頂插入元素。?出棧(pop)操作:在棧頂刪除元素。?讀棧頂元素:只是讀出棧頂元素,并不改變棧內(nèi)元素。
5順序棧 用向量作為存儲(chǔ)結(jié)構(gòu),可用一維數(shù)組s[1:m] 表示。
m-棧的最大容量。 Top-棧頂指示器。top=0,???;top=m,棧滿。a1a2……top12a1a2……123top進(jìn)棧:top+1a1a2……12退棧:top-1topa1a2a3……am棧滿top……0top???.3.1棧的結(jié)構(gòu)和運(yùn)算6順序棧(C++描述)#defineSTACKSIZE100 //堆棧最大可分配空間數(shù)量classSqStack{public: ElemTypedata[STACKSIZE]; //存儲(chǔ)元素的數(shù)組
inttop; //棧頂指針,存儲(chǔ)棧頂元素的下標(biāo)
SqStack(){top=-1;} //構(gòu)造函數(shù)
voidPush(ElemTypex); //入棧操作
voidPop(ElemType&result); //出棧操作
voidGetTop(ElemType&result); //取棧頂元素};
一般將數(shù)組的0下標(biāo)單元作為棧底,將棧頂元素的下標(biāo)存儲(chǔ)在棧頂指針top中,它隨著元素進(jìn)棧出棧而變化。top為-1表示空棧,top等于stacksize-1則表示棧滿。3.3.1棧的結(jié)構(gòu)和運(yùn)算7(1)進(jìn)棧操作若棧不滿,則在棧頂插入元素x作為新的棧頂。voidSqStack::Push(ElemTypex){ if(top<stacksize-1) { top++; data[top]=x; } elsecout<<”棧滿”;}3.3.1棧的結(jié)構(gòu)和運(yùn)算8(2)出棧操作若棧不空,則刪除棧頂元素,用result返回其值。voidSqStack::Pop(ElemType&result){ if(top>-1)
{ result=data[top]; top--; }elsecout<<"棧空";}3.3.1棧的結(jié)構(gòu)和運(yùn)算9(3)取棧頂元素若棧不空,則用result返回棧頂元素。voidSqStack::GetTop(ElemType&result){ if(top>-1){ result=data[top]; } elsecout<<"???;}3.3.1棧的結(jié)構(gòu)和運(yùn)算10鏈棧 鏈棧是用鏈表作為棧的存儲(chǔ)結(jié)構(gòu),top為棧頂指 針,指示棧頂元素位置,若top=NULL,則表示棧 空。鏈棧一般不會(huì)出現(xiàn)上溢,除非內(nèi)存中已不 存在可用空間。top^棧底top空棧3.3.1棧的結(jié)構(gòu)和運(yùn)算11鏈棧的插入(進(jìn)棧):鏈棧的刪除(退棧):top┄x^pp->data=x; p->next=top;top=p;top┄^p=top;top=top->next;
free(p);3.3.1棧的結(jié)構(gòu)和運(yùn)算12鏈?zhǔn)綏?C++描述)
棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)質(zhì)上就是一個(gè)無(wú)頭結(jié)點(diǎn)、只能在頭部插入、刪除元素的單鏈表。typedefstructnode{
ElemTypedata; //數(shù)據(jù)域
structnode*next; //指針域}SNode; classLinkStack{ public: SNode*top; //棧頂指針
LinkStack(){top=NULL;} //構(gòu)造函數(shù)
voidPush(ElemTypex); //入棧操作
voidPop(ElemType&result); //出棧操作};
3.3.1棧的結(jié)構(gòu)和運(yùn)算13(1)進(jìn)棧操作若棧不滿,則在棧頂插入元素x作為新的棧頂。
voidLinkStack::Push(ElemTypex){ SNode*p=newSNode; if(p!=NULL){ p->data=x; p->next=top;
top=p; }}3.3.1棧的結(jié)構(gòu)和運(yùn)算14(2)出棧操作若棧不空,則刪除棧頂元素,用result返回其值。voidLinkStack::Pop(ElemType&result);{ SNode*p;
if(top!=NULL){ result=top->data;
p=top; top=top->next; deletep; }}3.3.1棧的結(jié)構(gòu)和運(yùn)算154.棧的應(yīng)用
(1)
表達(dá)式求值(用于高級(jí)語(yǔ)言的編譯程序)
運(yùn)算符:**/*+-; 優(yōu)先數(shù):322110小括號(hào)優(yōu)先數(shù):θ1 θ2
(
<其它符號(hào),=“)”
(
>其它符號(hào))
>其它符號(hào)
)
<其它符號(hào)3.3.1棧的結(jié)構(gòu)和運(yùn)算16
需建立兩個(gè)棧:操作數(shù)(NS)、運(yùn)算符(OS)。
算法思想:置NS為空,“;”作為OS的棧底元素。自左至右掃描表達(dá)式:①若為操作數(shù),將其壓入NS棧②若為運(yùn)算符,與OS棧頂元素比較優(yōu)先級(jí):>OS棧頂,則將當(dāng)前運(yùn)算符壓入OS棧。<=OS棧頂,則從NS棧中彈出兩個(gè)操作數(shù)x、y,再?gòu)腛S棧中彈出一個(gè)運(yùn)算符θ,構(gòu)成一條機(jī)器指令:xθy→T,將結(jié)果T送入NS棧。=“;”,且OS棧頂也為“;”,則表示表達(dá)式處理結(jié)束,此時(shí)NS棧頂?shù)脑丶礊榇吮磉_(dá)式的值。(1)
表達(dá)式求值3.3.1棧的結(jié)構(gòu)和運(yùn)算17
舉例:設(shè)表達(dá)式為:A/B**C+D;過(guò)程為:CBA**/;DT2+;B**C-->T1T1A/;T2+
D-->T3T3;;A/T1-->T2T2得到表達(dá)式的值T33.3.1棧的結(jié)構(gòu)和運(yùn)算18
過(guò)程嵌套--多重嵌套時(shí),用棧將各層斷點(diǎn)信息依次入棧,當(dāng)各層子過(guò)程返回時(shí),以相反的次序從棧頂取出(FILO,or,LIFO)r主過(guò)程rstrsrstrsr子程A子程B子程C3.3.1棧的結(jié)構(gòu)和運(yùn)算(2)
過(guò)程調(diào)用19
遞歸調(diào)用--一個(gè)過(guò)程通過(guò)過(guò)程調(diào)用語(yǔ)句 直接或間接地調(diào)用自己的過(guò)程。直接遞歸程序ABegin.A.End程序A程序BBegin.B.EndBegin.A.End間接遞歸3.3.1棧的結(jié)構(gòu)和運(yùn)算20(3)
回溯求解算法3.3.1棧的結(jié)構(gòu)和運(yùn)算1)問(wèn)題描述:設(shè)有n件體積分別為w1,w2,...,wn的物品和一個(gè)能裝載總體積為T的背包,要求從n件物品中挑選出若干件物品,其體積之和恰好裝滿背包。若能,則背包問(wèn)題有解,否則無(wú)解。2)解決方法:先將n件物品順序排列,依次裝入背包,每裝入一件即檢查當(dāng)時(shí)包內(nèi)物品體積是否超過(guò)T,若裝入該件物品后不超過(guò)背包容 量T,則裝入,否則棄之取下一個(gè),直到裝滿背包為止。若在裝入若干物品后背包未滿,但又無(wú)其它物品可選時(shí),說(shuō)明已裝入背包內(nèi)的物品組合不合適,需從背包中取出最后裝入的物品,繼續(xù)在其它未裝入物品中挑選,如此重復(fù)直到裝滿背包(有解)或無(wú)合適物品可選(無(wú)解)。3)分析:設(shè)一維數(shù)組W[n]用來(lái)存放n件物品的體積,棧S[n]用來(lái)存放放入背包內(nèi)物品的序號(hào),T為背包能容納的體積,i為待選物品序號(hào)。每進(jìn)棧一件物品,就從T中減去該物品的體積,若T-W[i]≥0,則該物品可選,若T-W[i]<0,則該物品不可選,若i>n,則需退棧,若此時(shí)棧空,則說(shuō)明無(wú)解。214)算法描述
Pack(T,n,W,S,top)
{
top=0;i=1;//初始化
while(T>0&&i<=n){if(T-W[i]==0||(T-W[i]>0&&i<n)){top++;S[top]=i;T=T-W[i];
}//可選if(T==0)return(1);//有解
else
{if(i==n&&top>0){i=S[top];top--;T+=W[i];}//退棧
i++;//取下一個(gè)
}
}//endwhile
return(0);
}3.3.1棧的結(jié)構(gòu)和運(yùn)算
5)舉例: 若T=10,W=(4,7,3,5,4,2),棧的變化如下:22473542Wi初始狀態(tài)StopT=10473542Wi414StopT=1473542i11topT=6473542i313topT=3473542i回溯41topT=6473542i回溯51topT=6473542i515topT=2473542i6156topT=03.3.1棧的結(jié)構(gòu)和運(yùn)算23
N=(Ndivd)*d+Nmodd;div為整除運(yùn)算,mod為求余(1344)10=(2504)8N
Ndiv8
Nmod81348
168416821021
25202順序進(jìn)棧出棧順序(4)十進(jìn)制數(shù)N轉(zhuǎn)換成其它d進(jìn)制的數(shù)3.3.1棧的結(jié)構(gòu)和運(yùn)算24輸入任意一個(gè)非負(fù)十進(jìn)制整數(shù),輸出與其等值的八進(jìn)制數(shù)。voidconversion(){InitStack(S);//構(gòu)造空棧
scanf("%d",n);
while(n){push(S,n%8);n=n/8;}while(!StackEmpty){Pop(S,e);printf("%d",e);}}3.3.1棧的結(jié)構(gòu)和運(yùn)算253.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算隊(duì)的定義 只允許在表的一端進(jìn)行插入,在表的另一 端進(jìn)行刪除的線性表。
隊(duì)尾-允許插入的一端(rear)
隊(duì)首-允許刪除的一端(front)隊(duì)中元素按a1,a2,…,an次序入隊(duì)和出隊(duì)。 隊(duì)的操作特點(diǎn):先進(jìn)先出(FIFO);
n=0時(shí)稱為空隊(duì)。隊(duì)的存儲(chǔ)結(jié)構(gòu):順序和鏈?zhǔn)絘bcfrontrear入隊(duì)出隊(duì)隊(duì)列示意圖261、順序隊(duì)列—隊(duì)列順序存儲(chǔ)
順序存儲(chǔ)的隊(duì)列中,每次出隊(duì)列的元素必定是隊(duì)頭元素,因此如果采取與普通順序表同樣的操作方式,則每次出隊(duì)操作必然將整個(gè)隊(duì)列向前移動(dòng),這使得效率大大降低。因此在順序存儲(chǔ)的隊(duì)列中,出隊(duì)和入隊(duì)操作都不移動(dòng)元素而是移動(dòng)指針。為方便起見(jiàn),這里規(guī)定隊(duì)頭指針front指向隊(duì)頭元素的前一個(gè)位置,隊(duì)尾指針rear指向隊(duì)尾元素所在位置。這樣,入隊(duì)和出隊(duì)操作的執(zhí)行步驟都是首先執(zhí)行指針移動(dòng),再進(jìn)行元素讀寫。對(duì)空隊(duì)列而言,可假定front和rear的值為-13.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算27假溢出ABCfrontrearfrontrear
(a)
A?B?C入隊(duì)
(b)
A?B出隊(duì),D?E入隊(duì)
(c)隊(duì)列假溢出隊(duì)列假溢出示意圖CDEfrontrear隨著元素不斷入隊(duì)列、出隊(duì)列,rear和front指針會(huì)不斷向后移動(dòng)(如圖(b)所示),最終會(huì)指向數(shù)組的最大下標(biāo)位置(如圖(c)所示)。由于rear和front指針只能單方向移動(dòng),這時(shí)元素?zé)o法入隊(duì)列,但是隊(duì)列中仍有大量空閑位置。這種情況稱為假溢出。3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算282、循環(huán)隊(duì)列 解決隊(duì)列假溢出的辦法是將存放隊(duì)列元素的數(shù)組首尾相接,形成循環(huán)隊(duì)列。循環(huán)隊(duì)列的基本操作方式為:入隊(duì)列時(shí)先執(zhí)行rear=(rear+1)%M,再將新元素在rear指示位置加入;出隊(duì)列時(shí)先執(zhí)行front=(front+1)%M,再將下標(biāo)為front的元素取出。
3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算29
為了將隊(duì)空和對(duì)滿的條件加以區(qū)分,一般不使用front指針?biāo)傅奈恢谩?/p>
隊(duì)空條件為front=rear
隊(duì)滿條件為(rear+1)%M=front30124567frontrearABCD30124567frontrear30124567frontrearABCDFGE
(a)循環(huán)隊(duì)列空(b)非空循環(huán)隊(duì)列(c)循環(huán)隊(duì)列滿循環(huán)隊(duì)列示意圖
3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算30循環(huán)隊(duì)列描述如下:#defineMAXSIZE100 //隊(duì)列最大可分配空間數(shù)量classSqQueue{public: ElemTypedata[MAXSIZE]; //存放元素的數(shù)組
intfront; //隊(duì)頭指針
intrear; //隊(duì)尾指針
voidEnQueue(ElemTypex);
//入隊(duì)操作
voidDeQueue(ElemType&e);//出隊(duì)操作
voidGetHead(ElemType&e);//取隊(duì)頭元素};front和rear指針取值均為所指數(shù)組單元的下標(biāo)。由于隊(duì)頭指針?biāo)竼卧偸强盏?,length比實(shí)際能存儲(chǔ)的元素多一。
3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算31(1)入隊(duì)操作若隊(duì)列不滿,則在隊(duì)尾插入元素x作為新的隊(duì)尾。voidSqQueue::EnQueue(ElemTypex){ if((rear+1)%MAXSIZE==front)
cout<<"隊(duì)列已滿";
else{ rear=(rear+1)%MAXSIZE; data[rear]=x; }}常用算法
3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算32
(2)出隊(duì)操作若隊(duì)列不空,則刪除隊(duì)頭元素并用e取回該元素的值。voidSqQueue::DeQueue(ElemType&e){ if(rear==front)cout<<"隊(duì)列已空";
else{ front=(front+1)%MAXSIZE;
e=data[front];
}}3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算33(3)取隊(duì)頭元素若隊(duì)列不空,則用e取回隊(duì)頭元素的值。voidSqQueue::GetHead(ElemType&e){ if(rear==front)cout<<"隊(duì)列已空";
else{ inti=(front+1)%MAXSIZE; e=data[i]; }}3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算343、鏈隊(duì)列—隊(duì)列鏈?zhǔn)酱鎯?chǔ) 鏈隊(duì)列實(shí)質(zhì)上就是只能在頭部刪除元素、只能在尾部插入元素的單鏈表。 隊(duì)頭指針front就是單鏈表的頭指針,隊(duì)尾指針rear則是指向單鏈表最后一個(gè)結(jié)點(diǎn)的指針。
Qa1an∧frontrear非空鏈隊(duì)列
3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算35鏈隊(duì)列的結(jié)點(diǎn)可定義如下:
structQNode{
ElemTypedata;
structQNode*next; };
鏈隊(duì)列有兩個(gè)指針,因此可采用下面定義:classLinkQueue{public: QNode*front; //隊(duì)頭指針
QNode*rear; //隊(duì)尾指針(下頁(yè)繼續(xù)……)3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算36(接上頁(yè))
LinkQueue() { front=newQNode; //建立頭結(jié)點(diǎn)
front->next=NULL; rear=front; //尾指針也指向頭結(jié)點(diǎn)
}
intLength(); //求隊(duì)列長(zhǎng)度
voidEnQueue(ElemTypex);//入隊(duì)操作
voidDeQueue(ElemType&e);//出隊(duì)操作
voidGetHead(ElemType&e);//求隊(duì)頭元素};3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算37(1)求隊(duì)列的長(zhǎng)度返回隊(duì)列的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度。
intLinkQueue::Length(){ QNode*p=front;
intlen=0; while(p!=rear){ len++; p=p->next; } returnlen;}3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算38(2)入隊(duì)列操作插入元素x為隊(duì)列新的隊(duì)尾元素。
voidLinkQueue::EnQueue(ElemTypex){ QNode*s=newQNode; //建立新結(jié)點(diǎn)s s->data=x; s->next=NULL; rear->next=s; //在隊(duì)尾插入結(jié)點(diǎn)s rear=s; //修改隊(duì)尾指針}3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算39(3)出隊(duì)列操作若隊(duì)列不空,則刪除隊(duì)頭元素,用e返回其值。voidLinkQueue::DeQueue(ElemType&e){ QNode*p; if(front==rear)cout<<"隊(duì)列已空"; else{ p=front->next; e=p->data; front->next=p->next; if(rear==p)rear=front;
deletep; }}刪除最后一個(gè)元素時(shí),需要修改尾指針,使其指向頭結(jié)點(diǎn)3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算40(4)取隊(duì)頭元素若隊(duì)列不空,則用e返回隊(duì)頭元素;voidLinkQueue::GetHead(ElemType&e){ QNode*p; if(front==rear)cout<<"隊(duì)列已空";
else{ p=front->next; e=p->data; }}3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算41
FIFO原則--模擬排隊(duì)問(wèn)題。 多道程序中的CPU管理
在只有一個(gè)CPU的條件下,多個(gè)用戶共同使用計(jì)算機(jī),隊(duì)列在實(shí)現(xiàn)合理分配CPU中起重要作用。操作系統(tǒng)可作如下處理: 1)當(dāng)一個(gè)用戶請(qǐng)求CPU時(shí),它就進(jìn)入使用CPU的隊(duì)列。3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算4、隊(duì)的應(yīng)用42
2)在此隊(duì)列首部的用戶是當(dāng)前CPU的使用者,并且在整個(gè)CPU時(shí)間周期內(nèi)繼續(xù)留在隊(duì)列的首部。 3)當(dāng)一個(gè)用戶完成了它的現(xiàn)行請(qǐng)求CPU的時(shí)間周期后,就出此隊(duì)列,并在形成下一個(gè)請(qǐng)求時(shí)間周期之前不再進(jìn)隊(duì),兩次請(qǐng)求之間的時(shí)間稱為延遲周期。 這種調(diào)度原則稱為“先來(lái)先服務(wù)”, 請(qǐng)參見(jiàn)教材第42頁(yè)的例子。3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算43 緩沖區(qū)的設(shè)計(jì)
1)適用于多道程序?qū)σ粋€(gè)公共數(shù)據(jù)區(qū)(公共緩沖區(qū))進(jìn)行數(shù)據(jù)存取的情況。遵循“先存入先取出”的原則。
2)在計(jì)算機(jī)系統(tǒng)中由于高速的主機(jī)與慢速的外設(shè)之間速度不匹配,致使主機(jī)要等待,使效率大大降低,利用緩沖區(qū)可以進(jìn)行解決。
例:打印機(jī)速度較計(jì)算機(jī)慢得多,計(jì)算機(jī)輸出的數(shù)據(jù)不能同時(shí)打印出來(lái),通過(guò)設(shè)置打印緩沖區(qū)隊(duì)列來(lái)解決。 --常用循環(huán)隊(duì)列來(lái)實(shí)現(xiàn)緩沖區(qū)設(shè)置。3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算44/***用隊(duì)列結(jié)構(gòu)處理備忘錄****/#include<stdio.h>#include<stdlib.h>#include<string.h>#defineM10/*最多十條記錄*/char*p[M];/*指針數(shù)組,存放備忘錄隊(duì)列*/intrear,front;/*rear:隊(duì)列,front:對(duì)頭*/voidenter(),list(),delete(),save(),load();main(){charc,s[80];registerintt;for(t=0;t<M;t++)p[t]=NULL;rear=front=0;/*隊(duì)列賦初值,空隊(duì)列*/
for(;;)switch(menu_select()){case1:enter();break; case2:save();break; case3:load();break; case4:list();break; case5:delete();break; case0:exit(0);}}3.3.2隊(duì)的結(jié)構(gòu)和運(yùn)算--應(yīng)用實(shí)例閱讀理解45menu_select(){chars[80];intc;printf("1----inputmemo\n");/*顯示菜單,接收用戶輸入*/
printf("2----savememotofile\n");printf("3----loadmemofromfile\n");printf("4----listmemo\n");printf("5----deletememoitem\n");printf("0----exit\n");do{ printf("\nPleaseinputyourselect:"); gets(s);/*接收輸入,并將字符串轉(zhuǎn)化為整數(shù)*/
c=atoi(s);}while(c<0||c>6);/*c<0或c>6,輸入無(wú)效*/
returnc;}46voidenter()/*輸入備忘錄內(nèi)容*/{chars[256]="";/*接收輸入,暫存*/char*item;
do{ printf("inputthe%dstitem:",rear+1);/*st:表示序號(hào)*/
gets(s); if(*s==0)break; item=malloc(strlen(s)+1);/*增開(kāi)存儲(chǔ)區(qū)域*/
if(!item) {printf("Noenoughmomery!");return;} strcpy(item,s); if(*s) {if(rear==M)
{printf("Overflow!\n");} else
{p[rear]=item;rear++;}
}
}while(*s);}存放動(dòng)態(tài)分配的內(nèi)存首地址,分配的內(nèi)存用于存放S中的內(nèi)容把item指針?biāo)傅膬?nèi)容存放到隊(duì)列的第rear位置47voidsave()/*將備忘錄存入文件*/{
FILE*fp;inti;if((fp=fopen("memo.txt","w+"))==NULL){printf("Cannotopenfile!");exit(0);}for(i=front;i<rear;i++){fwrite(p[i],strlen(p[i]),1,fp);
fwrite("C",1,1,fp);}
fwrite("\0",1,1,fp);/*在文件末尾寫上“0”,作為結(jié)束標(biāo)記*/
fclose(fp);}strlen()為要寫的字節(jié)數(shù),p[i]為記錄首地址在每一項(xiàng)記錄末尾寫上“C”,作為結(jié)束標(biāo)記48voidsave()/*將備忘錄存入文件*/{
FILE*fp;inti;if((fp=fopen("m
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年食品經(jīng)營(yíng)配送保密條款3篇
- 維護(hù)電梯plc系統(tǒng)課程設(shè)計(jì)
- 2024年電商企業(yè)個(gè)人信息保護(hù)合同
- 2024年虛擬現(xiàn)實(shí)教育平臺(tái)開(kāi)發(fā)與合作協(xié)議
- 戶外燒烤菜單課程設(shè)計(jì)
- 2024年量子通信網(wǎng)絡(luò)建設(shè)施工勞務(wù)合同
- 二零二五年度27所院校合作辦學(xué)項(xiàng)目合同范本3篇
- 二零二五年度個(gè)人信用貸款合同及借條樣本2篇
- 材料制備訓(xùn)練課程設(shè)計(jì)
- 2024年版物流運(yùn)輸合作合同3篇
- 2024信息技術(shù)應(yīng)用創(chuàng)新信息系統(tǒng)適配改造成本度量
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測(cè)試(零模)英語(yǔ) 含解析
- 陜西測(cè)繪地理信息局所屬事業(yè)單位2025年上半年招聘87人和重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 保險(xiǎn)學(xué)期末試題及答案
- 高一數(shù)學(xué)上學(xué)期期末模擬試卷01-【中職專用】2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期(高教版2023基礎(chǔ)模塊)(解析版)
- 嚴(yán)重精神障礙患者隨訪服務(wù)記錄表
- 2024-2025學(xué)年人教版八年級(jí)上冊(cè)地理期末測(cè)試卷(一)(含答案)
- 統(tǒng)編版(2024新版)七年級(jí)上冊(cè)道德與法治第四單元綜合測(cè)試卷(含答案)
- 滬教版英語(yǔ)小學(xué)六年級(jí)上學(xué)期期末試題與參考答案(2024-2025學(xué)年)
- 北京市海淀區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期語(yǔ)文期末試卷
- 混凝土企業(yè)安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論