




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include <conio.h>/getch();#include <windows.h>/system("cls")#include<malloc.h> / malloc()等#include<stdio.h>#include<process.h> / exit()#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status; / Status
2、是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼 typedef int SElemType;/ SElemType是int類型typedef int ElemType;/ ElemType是int類型struct LNodeSElemType data;LNode *next;typedef LNode *LinkStack;/ 操作結(jié)果:構(gòu)造一個(gè)空的線性表LStatus InitStack(LinkStack &L)L=(LinkStack)malloc(sizeof(LNode); / 產(chǎn)生頭結(jié)點(diǎn),并使L指向此頭結(jié)點(diǎn) if(!L) / 存儲(chǔ)分配失敗exit(OVERFLOW);L->n
3、ext=NULL; / 指針域?yàn)榭誶eturn OK;/ 初始條件:線性表L已存在/ 操作結(jié)果:依次對(duì)L的每個(gè)數(shù)據(jù)元素進(jìn)行輸出Status STraverse(LinkStack L)/對(duì)棧進(jìn)行遍歷輸出;LinkStack p=L->next;/讓指針指向頭結(jié)點(diǎn)下一個(gè)結(jié)點(diǎn),頭結(jié)點(diǎn)里無內(nèi)容; printf("tt");while(p)printf("%5d",p->data);p=p->next;printf("n");return OK;/ 線性表L已存在,在L的頭部插入新的數(shù)據(jù)元素e,作為鏈表的第一個(gè)元素 Stat
4、us Push(LinkStack L,SElemType e)/在棧頂插入元素;LinkStack s;s=(LinkStack)malloc(sizeof(LNode); / 生成新結(jié)點(diǎn)s->data=e; / 給結(jié)點(diǎn)賦值s->next=L->next; / 插在棧頂L->next=s;return OK;/ 線性表L已存在,刪除L的棧頂元素,并返回其值SElemType Pop(LinkStack L)/彈出棧頂元素;system("cls");/清屏,包含于頭文件<windows.h>LinkStack p=L->next;
5、/SElemType e;printf("tt-棧頂元素-n");if(p)e=p->data;L->next=p->next;free(p);return e;elsereturn ERROR;/ 返回表頭元素的值SElemType GetTop(LinkStack L)LinkStack p=L->next;SElemType e;if(!p) / 空表return ERROR;else / 非空表e=p->data;return e;/ 從棧底到棧頂依次對(duì)棧中每個(gè)元進(jìn)行訪問。 Status StackTraverse(LinkStack
6、S)SElemType e;LinkStack temp,p=S;InitStack(temp); / 初始化temp棧printf("tt-棧元素瀏覽-n");printf("tt棧的元素依次為: n");while(p->next)e=GetTop(p);Push(temp,e);p=p->next;STraverse(temp);printf("n");printf("tt按任意鍵返回.n");getch();system("cls");return OK;/ 初始條件:線性表
7、L已存在。操作結(jié)果:銷毀線性表L Status DestroyStack(LinkStack &L)LinkStack q;while(L)q=L->next;free(L);/釋放棧;L=q;return OK;/ 初始條件:線性表L已存在。操作結(jié)果:若L為空表,則返回TRUE,否則返回FALSE Status StackEmpty(LinkStack L)if(L->next) / 如果頭結(jié)點(diǎn)有后繼說明棧非空,此時(shí)返回值0;return FALSE;elsereturn TRUE;int StackLength(LinkStack L) / 初始條件:線性表L已存在。操
8、作結(jié)果:返回L中數(shù)據(jù)元素個(gè)數(shù)int i=0;LinkStack p=L->next; / p指向第一個(gè)結(jié)點(diǎn)system("cls");printf("tt-棧的長(zhǎng)度-n");while(p) / 沒到表尾i+; /用來標(biāo)記棧的長(zhǎng)度;p=p->next;return i;/返回值即為棧的長(zhǎng)度;Status ClearStack(LinkStack L) / 不改變L / 初始條件:線性表L已存在。操作結(jié)果:將L重置為空表LinkStack p,q;p=L->next; / p指向第一個(gè)結(jié)點(diǎn)while(p) / 沒到表尾,到表位則停止操作;
9、q=p->next;free(p);p=q;L->next=NULL; / 頭結(jié)點(diǎn)指針域?yàn)榭誶eturn OK;void print(SElemType c)/打印printf("%d ",c);void main()int i;int select;/標(biāo)記變量;LinkStack s;SElemType e;InitStack(s);/創(chuàng)建一個(gè)空棧;if(!InitStack(s)printf("棧初始化失敗!");return ; /初始化失敗 提示并退出程序; elseprintf("棧已初始化成功!n");/初始化
10、成功則提示; while(1)printf("ttt棧的操作nn"); printf("ttt 1. 從棧頂插入元素 n ");printf("ttt 2. 彈出棧頂元素 n ");printf("ttt 3. 查詢棧長(zhǎng)度 n ");printf("ttt 4. 查詢棧頂元素 n ");printf("ttt 5. 是否為空棧 n ");printf("ttt 6. 瀏覽棧中的元素 n ");printf("ttt 7. 清空棧 n "
11、);printf("ttt 0. 退出程序 nn");printf("tttn"); printf("ttt您的選擇(0-7): ");scanf("%d",&select);switch(select)case 1:system("cls");printf("ttt-棧插入元素-n");printf("ttt請(qǐng)輸入要插入元素個(gè)數(shù):");scanf("%d",&i);printf("ttt請(qǐng)依次輸入要插入的元素
12、:");while(i-)scanf("%d",&e);Push(s,e);printf("ttt壓棧操作完成!n"); printf("tt按任意鍵返回."); getch();/返回主菜單; system("cls");/清屏; break; case 2: e = Pop(s); if(e) printf("ttt棧頂元素: %d 已彈出!n",e); else printf("ttt棧頂元素不存在!n"); printf("tt按任意鍵返回
13、.n"); getch();/返回主菜單,getch()包含于頭文件<conio.h> system("cls"); break; case 3: printf("ttt此時(shí)棧的長(zhǎng)度為%d n",StackLength(s); printf("tt按任意鍵返回.n"); getch(); system("cls"); break; case 4: system("cls"); printf("tt-棧頂元素-n"); e=GetTop(s); if(e)
14、 printf("ttt棧頂元素是:%d n",e); else printf("ttt棧為空n"); printf("tt按任意鍵返回.n"); getch(); system("cls"); break; case 5: system("cls"); printf("tt-判斷空棧-n"); printf("tt是否空棧?%d(1:空 0:否)n",StackEmpty(s); printf("tt按任意鍵返回.n"); getch
15、(); system("cls"); break; case 6: system("cls"); StackTraverse(s); break; case 7: system("cls"); printf("ttt-棧的清空-n"); ClearStack(s); if(!ClearStack(s) printf("tt棧清空失敗!n"); printf("tt按任意鍵返回.n"); getch(); else printf("tt棧清空成功!n"); printf("tt按任意
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年?;饭捃囻{駛員雇傭合同
- 2025年入股合同模板
- 2025年農(nóng)業(yè)技術(shù)創(chuàng)新成果轉(zhuǎn)讓許可合同范文
- 2025年新版幼兒園食品安全管理合同
- 2025年全球貨物交易合同標(biāo)準(zhǔn)文本
- 2025年共同創(chuàng)業(yè)公司策劃協(xié)議案例
- 工程施工勞動(dòng)合同合同樣本
- 2025年化工原料采購(gòu)合同標(biāo)準(zhǔn)版
- 2025年不銹鋼平板購(gòu)銷合同
- 【正版授權(quán)】 ISO/TS 6892-5:2025 EN Metallic materials - Tensile testing - Part 5: Specification for testing miniaturised test pieces
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 上海市楊浦區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期英語期末考卷(含筆試答案無聽力答案、原文及音頻)
- 課題申報(bào)參考:法國(guó)漢學(xué)家弗朗索瓦·朱利安對(duì)中國(guó)山水畫論的闡釋研究
- 生物-山東省濰坊市、臨沂市2024-2025學(xué)年度2025屆高三上學(xué)期期末質(zhì)量檢測(cè)試題和答案
- 2024年09月2024年中國(guó)農(nóng)業(yè)發(fā)展銀行總行部門秋季校園招聘(22人)筆試歷年參考題庫附帶答案詳解
- 2025年小學(xué)督導(dǎo)工作計(jì)劃
- 2024-2025學(xué)年部編版歷史九年級(jí)上冊(cè)期末復(fù)習(xí)練習(xí)題(含答案)
- 2025年北京生命科技研究院招聘筆試參考題庫含答案解析
- 銀行金融機(jī)構(gòu)銀行金融服務(wù)協(xié)議
- 基于ChatGPT的ESG評(píng)級(jí)體系實(shí)現(xiàn)機(jī)制研究
- 2024年長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及答案解析
評(píng)論
0/150
提交評(píng)論