?? seqstack.cpp
字號:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int top;
}SeqStack;
SeqStack SeqStackInit()
{
SeqStack s;
s.top=-1;
return s;
}
int SeqStackEmpty(SeqStack s)
{
if (s.top==-1)
{
return true;
}
else
return false;
}
SeqStack SeqStackPush(SeqStack s,int x)//b
{
if (s.top==MAXSIZE-1)
{
printf("棧滿!\n");
// exit(0);
}
else
{
s.top++;
s.data[s.top]=x;
}
return s;
}
SeqStack SeqStackPop(SeqStack s)
{
int x;
if (s.top==-1)
{
printf("棧空!\n");
exit(0);
}
x=s.data[s.top];
printf("出棧元素:%d\n",x);
s.top--;
return s;
}
int SeqStackGetTop(SeqStack s)
{
if (s.top!=-1)
{
return (s.data[s.top]);
}
else
return 0;
}
void SeqStackDisplay(SeqStack s)
{
if (s.top==-1)
{
printf("棧空!\n");
}
else
{
while (s.top!=-1)
{
printf("%d->",s.data[s.top]);
s.top--;
}
}
}
int main()
{
SeqStack s;
int n;
int i,seq,sel;
int pu,getop;
int flag=1;
char ch;
s=SeqStackInit();
printf("請輸入棧的長度:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("請輸入一整數:");
scanf("%d",&seq);
s=SeqStackPush(s,seq);
// SeqStackDisplay(s);
}
printf("\n");
SeqStackDisplay(s);
while (flag)
{
printf("select 1:SeqStackDisplay()\n");
printf("select 2:SeqStackPush()\n");
printf("select 3:SeqStackPop()\n");
printf("select 4:SeqStackGetTop()\n");
printf("請選擇1--4:");
scanf("%d",&sel);
switch(sel)
{
case 1:
printf("棧元素:");
SeqStackDisplay(s);
break;
case 2:
printf("請輸入一個整數:");
scanf("%d",&pu);
printf("\n");
s=SeqStackPush(s,pu);
SeqStackDisplay(s);
break;
case 3:
s=SeqStackPop(s);
// printf("出棧元素:%d\n",po);
SeqStackDisplay(s);
break;
case 4:
getop=SeqStackGetTop(s);
printf("棧頂元素:%d\n",getop);
SeqStackDisplay(s);
break;
}
printf("繼續操作(Y|N)");
getchar();
ch=getchar();
if ((ch=='n')||(ch=='N'))
flag=0;
else
flag=1;
}
//棧的應用 將整數轉換成二進制,八進制,等
/*
s=SeqStackInit();
int N;
scanf("%d",&N);
while(N!=0)
{
s=SeqStackPush(s,N%2);
N=N/2;
}
int e;
while (!SeqStackEmpty(s))
{
s=SeqStackPop(s);
// printf("%d->",e);
}
*/
/*
//棧的應用 表達式中括號匹配的檢查
s=SeqStackInit();
char c;
while ((ch=getchar())!='#')
{
switch(ch)
{
case '(': s=SeqStackPush(s,ch);break;
case ')': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
{
printf("括號不匹配");
}
else
s=SeqStackPop(s);
break;
case '[': s=SeqStackPush(s,ch);break;
case ']': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
{
printf(" 中括號不匹配");
}
else
s=SeqStackPop(s);
break;
case '{': s=SeqStackPush(s,ch);break;
case '}': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
{
printf(" 大括號不匹配");
}
else
s=SeqStackPop(s);
break;
}
}
if(SeqStackEmpty(s))
printf("括號匹配成功");
else
printf("括號不匹配成功");
*/
/*
//棧的應用 表達式求值
SeqStack optr,opnd;
char ch;
optr=SeqStackInit();//運算符棧初始化
optr=SeqStackPush(,'#');//'#'置于棧底,級別最低
opnd=SeqStackInit();//操作數棧初始化
// scanf("%c",&ch);//讀入表達式,以'#'結束
while (!(((ch=getchar())=='#')&&(SeqStackGetTop(optr)=='#')))
{
if (ch>='0' && ch<='9')
{
SeqStackPush(optr,ch);
}
else
switch()
{
}
}
*/
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -