一
(
(
(
答
答
答
(
int i; arr[
while ( StackEmpty(S)) arr[n++]=Pop(S);
for (i=
} //Demo
(
DataType x;
while ( ! StackEmpty (&S
{
x=Pop(&S
Push(&tmp
}
while ( ! StackEmpty (&tmp) )
{
x=Pop( &tmp);
Push( &S
Push( &S
}
(
{ // 設DataType 為int 型
SeqStack T; int i;
InitStack (&T);
while (! StackEmpty( S))
if(( i=Pop(S)) !=m) Push( &T
while (! StackEmpty( &T))
{
i=Pop(&T); Push(S
}
}
(
{ // 設DataType 為int 型
int x; SeqStack S;
InitStack( &S);
while (! QueueEmpty( Q ))
{x=DeQueue( Q); Push( &S
while (! StackEmpty( &s))
{ x=Pop(&S); EnQueue( Q
}// Demo
(
int x
while ( ! QueueEmpty( &Q
{ x=DeQueue( &Q
for (i=
{ x=DeQueue(&Q
EnQueue( &Q
答
(
(
(
(
(
二
解
//ishuiwen
int IsHuiwen( char *S)
{
SeqStack T;
int i
char t;
InitStack( &T);
l=strlen(S); //求向量長度
for ( i=
Push( &T
while( !EmptyStack( &T))
{
// 每彈出一個字符與相應字符比較
t=Pop (&T);
if( t!=S[l
i
}
return
}
// 以下程序用於驗證上面的算法
//以下是棧定義( 存為stack
//出錯控制函數
#include
#include
void Error(char * message)
{
fprintf(stderr
exit(
}
// 定義棧類型
#define StackSize
typedef char Datatype;
typedef struct{
Datatype data[StackSize];
int Top;
} SeqStack;
void InitStack( SeqStack *S)
{
//初始化(置空棧)
S
}
int EmptyStack(SeqStack *S)
{ //判棧空
return S
}
int FullStack (SeqStack *S)
{ // 判棧滿
return S
}
void Push (SeqStack *S
{ //進棧
if(FullStack(S))
Error(
S
}
Datatype Pop(SeqStack *S)
{ // 出棧(退棧)
if (EmptyStack( S) )
Error(
return S
}
//取棧頂元素(略)
//
//以下是主程序
#include
#include
#include
#include
void main( )
{
char Str[
printf(
scanf(
if( IsHuiwen(Str))
printf(
else printf(
}
附
個人認為如題目所言
我的編程思想是
我的算法如下
int HuiWen(char *p)
{
int i;
float t;
SeqStack S;
InitStack(&S);
t=strlen(p);
for(i=
Push(&S
if(floor(t/
i++;
while(p[i]!=
if(Pop(&S)==p[i])
i++;
else
return(
return(
}
=================================================
也可以直接用字符指針而不用字符數組來處理
算法如下
int HuiWen(char *p)
{
int i;
float t;
SeqStack S;
InitStack(&S);
t=strlen(p);
for(i=
Push(&S
if(floor(t/
p++;
while(*p!=
if(Pop(&S)==*p)
p++;
else
return(
return(
}
From:http://tw.wingwit.com/Article/program/sjjg/201311/23676.html