?? 堆棧操作 .cpp
字號:
//* * * * * * * * * * * * * * * * * * * * * * * * *
//*CHAPTER :3 (3_1) *
//*PROGRAM :堆棧操作 *
//*CONTENT :初始化,入棧,出棧,取棧頂元素 *
//* * * * * * * * * * * * * * * * * * * * * * * * *
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 5 //定義堆棧最大容量
enum BOOL{False,True}; //定義BOOL型
typedef struct //定義堆棧結構
{char elem[MAX]; //棧區(qū)
int top; //棧頂指針
}SqStack;
void Initial(SqStack &); //初始化一個堆棧
BOOL Push(SqStack &,char); //將一個元素入棧
BOOL Pop(SqStack&,char &); //將一個元素出棧
BOOL Gettop(SqStack,char &); //得到棧頂元素
void SqStackPrint(SqStack);//顯示棧中所有元素
void main()
{SqStack St;
int flag=1;
char j,ch;
BOOL temp;
textbackground(3); //設定屏幕顏色
textcolor(15);
clrscr();
//---------------------程序解說-----------------------
printf("本程序實現順序結構的堆棧的操作。\n");
printf("可以進行入棧,出棧,取棧頂元素等操作。\n");
//----------------------------------------------------
Initial(St); //初始化堆棧S
while(flag)
{ printf("請選擇:\n");
printf("1.顯示棧中所有元素 \n");
printf("2.入棧 \n");
printf("3.出棧 \n");
printf("4.取棧頂元素 \n");
printf("5.退出程序 \n");
scanf(" %c",&j);
switch(j)
{case '1':SqStackPrint(St);
break;
case '2':printf("請輸入要入棧的元素(一個字符):");
scanf(" %c",&ch); //輸入要入棧的元素
temp=Push(St,ch); //入棧
if(temp==False)printf("堆棧已滿!入棧失敗!\n");
else {printf("成功入棧!\n"); //成功入棧
SqStackPrint(St);
}
break;
case '3':temp=Pop(St,ch); //出棧
if(temp==False) printf("堆棧已空!\n");
else {printf("成功出棧一個元素:%c\n",ch); //成功出棧
SqStackPrint(St);
}
break;
case '4':temp=Gettop(St,ch); //取得棧頂元素
if(temp==False) printf("堆棧已空!\n");
else printf("棧頂元素是:%c\n",ch); //顯示棧頂元素
break;
default:flag=0;printf("程序結束,按任意鍵退出!\n");
}
}
getch();
}
void Initial(SqStack &S)
{S.top=-1; //棧頂指針初始化為-1
}
BOOL Push(SqStack &S,char ch)
{//將元素ch入棧,成功返回True,失敗返回False
if(S.top>=MAX-1) return False;//判斷是否棧滿
else {S.top++; //棧頂指針top加一
S.elem[S.top]=ch; //入棧
return True;
}
}
BOOL Pop(SqStack &S,char &ch)
{//將棧頂元素出棧,成功返回True,并用ch返回該元素值,失敗返回False
if(S.top<=-1) return False;//判斷是否??? else {S.top--; //棧頂指針減一
ch=S.elem[S.top+1];
return True;
}
}
BOOL Gettop(SqStack S,char &ch)
{//取得棧頂元素,成功返回True,并用ch返回該元素值,失敗返回False
if(S.top<=-1)
return False;
else {ch=S.elem[S.top];//顯示棧頂元素
return True;
}
}
void SqStackPrint(SqStack S)
{//顯示棧中所有元素
int i;
if(S.top<=-1) printf("堆棧已空!\n");
else {printf("堆棧所有元素:\n");
for(i=0;i<=S.top;i++)
printf("%c ",S.elem[i]);
printf("\n");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -