資料結構 回文判斷及其應用

2021-10-07 02:25:21 字數 3571 閱讀 5778

要求:採用棧和佇列的方法檢測並輸出乙個單詞是否為回文

#include

#include

#include

//佇列

typedef

char qelemtype;

typedef

struct

sqqueue;

//棧#define maxsize 200

typedef

struct

stack;

//佇列

void

initqueue

(sqqueue &q)

void

enqueue

(sqqueue &q, qelemtype e)

void

dequeue

(sqqueue &q)

char

gethead

(sqqueue &q)

//棧int

initstack

(stack &stack)

intpush

(stack &s,

char x)

/*將x置入s棧新棧頂*/

}int

pop(stack &s,

char

&x)/*將棧s的棧頂元素彈出,放到x中*/

}int

compare

(char a,

char b)

intmain()

int counter =0;

for(

int j =

0; j <

strlen

(str)/2

+1; j++)}

if(counter ==

0) cout<<

"是回文"

;}

進一步思考:中文回文怎麼判定?(說明:中文編碼和char編碼格式不一樣,請拓展思考解決方法,並程式設計實現)

#include

#include

#include

//佇列

typedef

char qelemtype;

typedef

struct

sqqueue;

//棧#define maxsize 200

typedef

struct

stack;

//佇列

void

initqueue

(sqqueue &q)

void

enqueue

(sqqueue &q, qelemtype e)

void

dequeue

(sqqueue &q)

char

gethead

(sqqueue &q)

//棧void

initstack

(stack &stack)

intpush

(stack &s,

char x)

/*將x置入s棧新棧頂*/

}int

pop(stack &s,

char

&x)/*將棧s的棧頂元素彈出,放到x中*/

}int

compare

(char a1,

char a2,

char b1,

char b2)

intmain()

int counter =0;

for(

int j =

0; j <

strlen

(str)/2

-1; j++)}

if(counter ==

0) cout<<

"是回文"

0;

在上述單詞回文判定檢查上,請採用棧和佇列方法程式設計實現統計一篇文件中的所有出現的回文單詞。(文件建議採用檔案的形式讀入)

測試1:did anna say as ana did? ma is as selfless as am. your lovevol sjjg and beeb. she ini aqnu

ablelba.

#include

#include

#include

#include

//佇列

typedef

char qelemtype;

typedef

struct

sqqueue;

//棧#define maxsize 200

typedef

struct

stack;

//佇列

void

initqueue

(sqqueue &q)

void

enqueue

(sqqueue &q, qelemtype e)

intdequeue

(sqqueue &q,

char

&i)//棧

void

initstack

(stack &stack)

intpush

(stack &s,

char x)

/*將x置入s棧新棧頂*/

}int

pop(stack &s,

char

&x)/*將棧s的棧頂元素彈出,放到x中*/

}int

compare

(char a,

char b)

intmain()

//讀取檔案的全部資料

fgets

(str, n, fp)

;//用str從fp獲取長度為n的字串

int len =

strlen

(str)

;//記錄字串的長度

int flag =0;

//標記是否是回文

int counter =0;

//記錄棧和佇列中一共有幾個字元

int wordcounter =0;

//記錄文件中一共有多少個回文單詞

int loop =1;

for(

int i =

0; i < len +

1; i++

)else}if

(flag ==

0&& loop ==0)

cout<}else

}//將標點符號,空格刪除

for(

int j = i; j < len; j++

) len--

; i--

; flag =0;

counter =0;

//清除棧中資料,並將counter歸零}}

if(wordcounter ==

0) cout<<

"文件中沒有回文單詞"

"文件中的回文單詞個數為:"

}

資料結構及其應用

在程式的世界裡,任何問題或技術的落腳點都是資料結構,所以在學習或研究這些問題或技術時,要注重理解底層或實現過程中所採用的資料結構。本系列會將常用的資料結構進行總結,首先看下樹。一 樹常用的樹形資料結構有 搜尋二叉樹 平衡二叉樹 紅黑樹 完全二叉樹 1.搜尋二叉樹 父子節點滿足大小關係,左子樹都小於根...

資料結構 判斷回文數

棧的基本應用 判斷回文數 include include include include define stack init size 100 儲存空間初始分配量 define stack increasement 10 using namespace std typedef struct sqst...

回文判斷 資料結構 棧

試編寫乙個演算法,判斷一次讀入的乙個以 結束符的字母序列是否為形容序 列1 序列2 模式的字串行。其中序列1 和序列2都不含字元 且序列2是序列1的你序列。列入,a b b a 時屬於該模式的字串行,而 1 3 3 1 不是 include include include typedef struc...