C語言資料結構,使用靜態棧和串判斷字串是否為回文

2021-10-04 16:40:49 字數 1478 閱讀 4136

判斷思路如下:將字串前一半入棧,然後,棧中元素和字串後一半進行比較。即將第乙個出棧元素和後一半串中第乙個字元比較,若相等,則再出棧乙個元素與後乙個字元比較,……,直至棧空,結論為字串行是回文。在出棧元素與串中字元比較不等時,結論字串行不是回文。

**如下

#include

#define maxsize 30

/*順序靜態棧*/

typedef

struct stack

stack;

/*靜態串*/

typedef

struct strand

strand;

/*初始化棧*/

void

initialize_stack

(stack& s)

/*初始化串*/

void

initialize_strand

(strand& l)

/*壓棧*/

void

pushstack

(stack& s,

char c)

/*入串*/

void

pushstrand

(strand& l,

char c)

/*出棧*/

char

popstack

(stack& s)

/*出串*/

char

popstrand

(strand& l,

int i)

//增加乙個引數i,使得從串頭依次輸出字元

/*棧中資料出棧與串後一半比較*/

void

compare

(stack& s, strand& l)}if

(a != b)}}

/*主方法*/

intmain()

} k = j;

//中間資料,在後部分字串入串的時候需要用到

if(j %2==

0)//如果傳入的字串是偶數個,執行以下**

/*把字串的後一半傳入串中*/

for(i = j; i < k; i++)}

else

if(j %2)

//如果傳入的字串是奇數個,執行以下**

/*把字串的後一半傳入串中*/

for(i = j +

1; i < k; i++)}

compare

(s, l)

;//呼叫比較函式

return0;

}

執行結果:

如果有什麼不合適的地方,還請指出。。。

資料結構 棧(靜態棧和動態棧)

棧的性質 後進先出 lifo 棧可以分為兩種 靜態棧和動態棧 兩種棧的實現都可以復用單鏈表的 其中靜態棧可以復用順序表的 動態棧可以復用單鏈表的 其實可以從頭到尾實現乙個棧資料結構,但是那樣做是沒有意義的。復用的思想是工程中常見的,而且基於已經測試過的 就減少了中間會遇到的其它問題。首先是靜態棧的實...

資料結構 棧(C語言)

資料結構 棧 c語言 功能 建棧 出棧 壓棧 判斷棧是否為空 include include define ele int typedef struct stack stack stack newstack 初始化棧 int push stack s,ele value 壓棧 int pop sta...

資料結構 迷宮和棧 C語言

include stdio.h include stdlib.h include time.h define mazesize 10 define ok 1 define error 0 define true 1 define false 0 define stack init size 100 ...