?? seqstack2.h
字號:
#define TRUE 1
#define FALSE 0
#define Stack_Size 50
/*順序棧-整型*/
typedef struct
{
int elem[Stack_Size]; /*用來存放棧中元素的一維數組*/
int top; /*用來存放棧頂元素的下標,top為-1表示棧是空棧*/
}nStack;
/*初始化*/
void nInitStack(nStack *S)
{
/*構造一個空棧S*/
S->top=-1;
}
/*判???/
int nIsEmpty(nStack *S) /*判斷棧S為空棧時返回值為真,反之為假*/
{
return(S->top==-1?TRUE:FALSE);
}
/*判棧滿*/
int nIsFull(nStack *S) /*判斷棧S為滿棧時返回值為真,反之為假*/
{
return(S->top==Stack_Size-1?TRUE:FALSE);
}
int nPush(nStack * S, int x)
{
if(S->top== Stack_Size-1) return(FALSE); /*棧已滿*/
S->top++;
S->elem[S->top]=x;
return(TRUE);
}
int nPop(nStack * S, int *x)
{ /* 將棧S的棧頂元素彈出,放到x所指的存儲空間中 */
if(S->top==-1) /*棧為空*/
return(FALSE);
else
{
*x= S->elem[S->top];
S->top--; /* 修改棧頂指針 */
return(TRUE);
}
}
int nGetTop(nStack *S, int *x)
{ /* 將棧S的棧頂元素彈出,放到x所指的存儲空間中,但棧頂指針保持不變 */
if(S->top==-1) /*棧為空*/
return(FALSE);
else
{
*x = S->elem[S->top];
return(TRUE);
}
}
/*順序棧-字符型*/
typedef struct
{
char elem[Stack_Size]; /*用來存放棧中元素的一維數組*/
int top; /*用來存放棧頂元素的下標,top為-1表示棧是空棧*/
}strStack;
/*初始化*/
void strInitStack(strStack *S)
{
/*構造一個空棧S*/
S->top=-1;
}
/*判???/
int strIsEmpty(strStack *S) /*判斷棧S為空棧時返回值為真,反之為假*/
{
return(S->top==-1?TRUE:FALSE);
}
/*判棧滿*/
int strIsFull(strStack *S) /*判斷棧S為滿棧時返回值為真,反之為假*/
{
return(S->top==Stack_Size-1?TRUE:FALSE);
}
char strPush(strStack * S, char x)
{
if(S->top== Stack_Size-1) return(FALSE); /*棧已滿*/
S->top++;
S->elem[S->top]=x;
return(TRUE);
}
char strPop(strStack * S, char *x)
{ /* 將棧S的棧頂元素彈出,放到x所指的存儲空間中 */
if(S->top==-1) /*棧為空*/
return(FALSE);
else
{
*x= S->elem[S->top];
S->top--; /* 修改棧頂指針 */
return(TRUE);
}
}
int strGetTop(strStack *S, char *x)
{ /* 將棧S的棧頂元素彈出,放到x所指的存儲空間中,但棧頂指針保持不變 */
if(S->top==-1) /*棧為空*/
return(FALSE);
else
{
*x = S->elem[S->top];
return(TRUE);
}
}
/*功能函數*/
int Match(char ch,char str)
{
if(ch=='('&&str==')')
{
return TRUE;
}
else if(ch=='['&&str==']')
{
return TRUE;
}
else if(ch=='{'&&str=='}')
{
return TRUE;
}
else return FALSE;
}
int In(char ch)
{
if(ch=='+')
{
return TRUE;
}
else if(ch=='-')
{
return TRUE;
}
else if(ch=='*')
{
return TRUE;
}
else if(ch=='/')
{
return TRUE;
}
else if(ch=='(')
{
return TRUE;
}
else if(ch==')')
{
return TRUE;
}
else if(ch=='#')
{
return TRUE;
}
else return FALSE;
}
char Compare(char x,char ch)
{
switch(x)
{
case '+':
if(ch=='+'||ch=='-'||ch==')'||ch=='#')
return '>';
else if(ch=='*'||ch=='/'||ch=='(')
return '<';
break;
case '-':
if(ch=='+'||ch=='-'||ch==')'||ch=='#')
return '>';
else if(ch=='*'||ch=='/'||ch=='(')
return '<';
break;
case '*':
if(ch=='(')
{
return '<';
}
else
{
return '>';
}
break;
case '/':
if(ch=='(')
return '<';
else
return '>';
break;
case '(':
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='(')
return '<';
else if(ch==')')
return '=';
else if(ch=='#')
return '0';
break;
case ')':
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch==')'||ch=='#')
return '>';
else if(ch=='(')
return '0';
break;
case '#':
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='(')
return '<';
else if(ch=='#')
return '=';
else if(ch==')')
return '0';
break;
default:
return '0';
break;
}
}
int Execute(int a,char op,int b)
{
switch(op)
{
case '+':
return (a+b);
break;
case '-':
return (a-b);
break;
case '*':
return (a*b);
break;
case '/':
return (a/b);
break;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -