利用棧和隊來判斷輸入的一個字串是否為迴文
/*判斷迴文的思想:
就是利用棧的先進後出,隊的先進先出特性;
將一個字串分別入棧,入隊,再將它們分別出棧,出隊;
此時的出來的元素一個是字串的尾端的字元,一個是字串首端的字元,就將兩者進行比較
若相等就繼續迴圈判斷;若不相等就可以直接判斷不為迴文字串
*/
#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語言字串
- java判斷輸入的字串是否為數字Java字串
- 輸入字串,判斷是否為迴文字串,即前後對稱的(單個字元,不帶空格)字串字元
- Python:判斷一個正整數是否為迴文數Python
- 利用正規表示式判斷一個給定的字元是否是迴文字元
- js判斷輸入字串是否為空、空格、null總結JS字串Null
- 請判斷一個連結串列是否為迴文連結串列。
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- 判斷字串是否為空字串
- javascript中如何判斷一個字串是否為JSON格式JavaScript字串JSON
- 判斷字串是否唯一字串
- JavaScript判斷字串是否為空JavaScript字串
- js判斷字串是否為空JS字串
- java判斷字串是否為空Java字串
- PHP 判斷一個字元是否在字串中PHP字元字串
- PHP判斷一個字串是否包含亂碼PHP字串
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- 判斷一個字串/整數是不是迴文 2020-11-10字串
- python中快速驗證輸入的是否為迴文Python
- C#判斷字串是否為日期格式C#字串
- 如何判斷一個物件是否為空?物件
- 如何判斷一個 interface{} 的值是否為 nil ?
- 判斷URL字串是否合法字串
- 如何判斷一個js物件是否存在迴圈引用JS物件
- 使用Python實現一個棧, 判斷括號是否平衡Python
- J2SE-判斷字串是否為空字串
- 寫一個方法判斷給定的字串是否同態(isomorphic)字串
- 判斷迴文串 字串/數字相互轉換字串
- 大神教你如何判斷Python中字串是否為空和nullPython字串Null
- 判斷一個數是否為質數(程式碼)
- js判斷字串是否含有特殊字元和emoji表情JS字串字元
- JS如何判斷一個陣列是否為空、是否含有某個值JS陣列
- 驗證輸入的字串是否為合法日期字串
- 判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
- 如何判斷一個玩法是否合格?
- python如何判斷迴文Python
- 如何用python判斷列表中是否包含多個字串中的一個或多個?Python字串
- C語言:利用指標檢查字串是否是迴文C語言指標字串