利用棧和隊來判斷輸入的一個字串是否為迴文
/*判斷迴文的思想:
就是利用棧的先進後出,隊的先進先出特性;
將一個字串分別入棧,入隊,再將它們分別出棧,出隊;
此時的出來的元素一個是字串的尾端的字元,一個是字串首端的字元,就將兩者進行比較
若相等就繼續迴圈判斷;若不相等就可以直接判斷不為迴文字串
*/
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 50//定義棧和隊的最大儲存
//定義棧的儲存結構
typedef struct
{
char data[MAXSIZE];
int top;
}SeqStack;
//初始化棧
void InitSeqStack(SeqStack *s)
{
s->top=-1;
}
//判斷棧是否為空
int Empty(SeqStack *s)
{
if(s->top==-1)
return 0;//若為空返回0
else
return 1;
}
//入棧
void pushzhan(SeqStack *s,char x)
{
if(s->topMAXSIZE-1)
printf(“棧滿”);
else
{
s->top++;
s->data[s->top]=x;
}
}
//出棧
char Popzhan(SeqStack *s)
{
char x;
if(s->top-1)
return 0;
else
{
x=s->data[s->top];
s->top–;
return x;
}//返回字元x
}/*出棧的函式,將棧頂元素出棧並儲存在x中;
與取棧頂的函式不同的是將出棧的元素不再儲存在棧中 */
//定義隊的儲存結構
typedef struct {
char data[MAXSIZE];
int front; //指向隊的首位置
int rear; //指向隊的尾位置
}Queue;
//初始化隊
void InitDui(Queue *q)
{
q->front=q->rear=0;
}
//入隊
void pushdui(Queue *q,char e)
{
if((q->rear+1)%MAXSIZE==q->front)
{
printf(“佇列為空\n”);
}
else
{
q->data[q->rear]=e;
q->rear=(q->rear+1);
}
}
//出隊
char PopDui(Queue *q)
{
char f;
if(q->front==q->rear)
{
printf(“佇列為空\n”);
return 0;
}
else
{
f=q->data[q->front];
q->front=(q->front+1);
return f; //返回字元f
}
}
int main()
{
char c;
int y=0;
//SeqStack *s=(SeqStack *)malloc(sizeof(SeqStack));
SeqStack *s;
s = new SeqStack;//為棧s申請空間
// Queue *q=(Queue *)malloc(sizeof(Queue));
Queue *q;
q = new Queue;
InitSeqStack(s);
InitDui(q);
printf(“輸入一個字串:\n”);
while((c=getchar())!=’#’)
{
pushzhan(s,c); //將字串入棧
pushdui(q,c); //將字串入隊
}
while(Empty(s)) //當棧不為空的時候,就會執行下列的迴圈
{
if(Popzhan(s)PopDui(q)) //將出棧的元素與出隊的元素進行比較
{
y=1; //如果兩者相同,就將y賦值為1
continue;//返回迴圈最開始的地方(while(padz(s)))
}
else
{
y=0;
break; //如果兩者不相同,就直接結束迴圈,進行下面(if(y1))的語句執行
}
}
/迴圈中的break語句和continue語句的區別
break:執行到這句語句時候,滿足條件時,就直接退出迴圈
continue:執行到這句語句的時候,滿足條件時,不再執行此層迴圈,回到迴圈的開始/
if(y==1)
printf(“此字串為迴文\n”);
else
printf(“此字串不是迴文\n”);
return 0;
}
//喜歡的加一個關注吧,一個正在努力學習的大二小白
相關文章
- C語言:判斷一個字串是否為迴文C語言字串
- 33判斷字串是否為迴文字串
- YTUOJ-判斷字串是否為迴文字串
- java判斷輸入的字串是否為數字Java字串
- 輸入字串,判斷是否為迴文字串,即前後對稱的(單個字元,不帶空格)字串字元
- Python:判斷一個正整數是否為迴文數Python
- 利用正規表示式判斷一個給定的字元是否是迴文字元
- js判斷輸入字串是否為空、空格、null總結JS字串Null
- 如何判斷一個字串是否為純數字的問題,當然也可以判斷一個字串是否為純字母字串
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- 判斷字串是否為空字串
- js判斷一個變數是否為字串型別JS變數字串型別
- 判斷是否為迴文字元字元
- 判斷某一個字串是否存在另一個字串中字串
- js判斷字串是否為空JS字串
- JavaScript判斷字串是否為空JavaScript字串
- java判斷字串是否為空Java字串
- 判斷字串是否唯一字串
- javascript中如何判斷一個字串是否為JSON格式JavaScript字串JSON
- 在Oracle中,如何判斷一個字串是否為數字?Oracle字串
- 判斷一個字串是否包含一個子串的方法字串
- 利用ORACLE正規表示式判斷字串是否為日期格式Oracle字串
- [LeetCode] Is Subsequence 判斷一個字串是否為另一個的子序列LeetCode字串
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- PHP 判斷一個字元是否在字串中PHP字元字串
- PHP判斷一個字串是否包含亂碼PHP字串
- JS——判斷一個物件是否為空JS物件
- C#判斷字串是否為日期格式C#字串
- C#裡判斷字串是否為中文C#字串
- python中快速驗證輸入的是否為迴文Python
- 如何判斷一個js物件是否存在迴圈引用JS物件
- js判斷一個變數是否為空JS變數
- 如何判斷一個物件是否為jQuery物件物件jQuery
- js判斷一個物件是否為陣列JS物件陣列
- 常見物件-判斷一個字串是否對稱案例物件字串
- 如何利用jQuery判斷一個元素是否被隱藏jQuery
- J2SE-判斷字串是否為空字串
- 判斷URL字串是否合法字串