所謂回文數就是正著讀跟倒著讀一樣,比如abcba。用佇列判斷回文數需要乙個棧作為中間量,把一串數字分別進棧和入隊,按照棧先進後出和佇列先進先出的原則,如果棧頂元素跟隊頭元素相等,則棧頂元素出棧同時隊頭元素出隊,接著往下比較,知道必到該串數字的長度的一半,如果之前出棧的元素和出隊的元素分別一一相等,那麼該串數字就是回文數。
如下圖所示:
標頭檔案定義棧和順序佇列的結構體,以及實現棧的基本功能:
#include #include //佇列的結構體定義
typedef int datatype;
#define maxnum 20
struct seqqueue;
typedef struct seqqueue *psequeue;//重定義結構體
psequeue createmptyqueue(void);
int isemptysqueue(psequeue qu);
void insertqueue(psequeue qu,datatype x);
void deletequeue(psequeue qu);
datatype topqueueelement(psequeue qu);
int isfullqueue(psequeue qu);
//棧的結構體定義
typedef int datatype ;
struct node;//定義乙個結點
typedef struct node *pnode; //定義結點指標
struct node;
struct stack;
typedef struct stack *pointstack;
pointstack createempty_stack(void);//無返回值
int ifempty_stack(pointstack pstack);//傳入棧引數
void pushelement_stack(pointstack pstack,datatype x);
void popelement_stack(pointstack pstack,datatype x);
datatype elementstacktop(pointstack pstack);
//建立乙個空棧,返回指向空棧的指標
pointstack createempty_stack()
else
return pstack;
}//判斷棧是否為空
int ifempty_stack(pointstack pstack)
//往棧中壓入乙個元素
void pushelement_stack(pointstack pstack,datatype x)
else }
//出棧。即刪除乙個元素
void popelement_stack(pointstack pstack)
else }
//求棧頂元素
datatype elementstacktop(pointstack pstack)
else
}
原始檔主函式以及實現順序佇列基本功能:
#include "queue.h"
typedef int datatype;
#define maxnum 20
struct seqqueue;
typedef struct seqqueue *psequeue;//重定義結構體
//建立空佇列
psequeue createmptyqueue(void)
else }
//判斷佇列是否為空
int isemptysqueue(psequeue qu)
//在佇列中插入某乙個元素
void insertqueue(psequeue qu,datatype x)
else }
//返回佇列元素的個數
int queuenumber(psequeue qu)
else
return count;
}//刪除佇列頭部元素
void deletequeue(psequeue qu)
else }
//對於非空佇列,求隊頭元素
datatype topqueueelement(psequeue qu)
//判斷佇列是否已滿
int isfullqueue(psequeue qu)
//主函式
void main()
for (i=0;i
else}}
用C語言描述資料結構
用c語言描述資料結構 學好計算機,主要要從三個方面做起,其中,第一步就是要學好各種語言,這是第一步,對各種語言有乙個大體的了解 然後就是資料結構了,它是計算機中的一門核心的課程,也是一門資訊計算 在最後本人認為就是演算法了,它也是這三部中最難得一步了,要學好計算機,做一名優秀的程式元,這三步是最基本...
資料結構迴圈佇列(c語言描述)
迴圈佇列也是佇列的順序儲存結構,只是在原先的佇列的基礎上進行的優化,我在寫的時候出現了一些問題,但是我搜尋的部落格中都沒有提到這個問題,首先 front是指向佇列的第乙個元素,rear是指向隊尾的下乙個元素,maxsize是佇列的最大容量 首先我賣個關子,這裡maxsize的描述是錯的 佇列滿條件 ...
用C語言描述資料結構 線性表 順序表
什麼是線性表 線性表是由n個元素 結點 組成的有限序列。n為線性表的長度,n 0時稱為空表。線性表的邏輯特徵 1 對於非空的線性表,有且有乙個開始結點,它沒有直接前驅,而僅有乙個直接後繼。2 對於非空的線性表,有且有乙個終端結點,它沒有直接後繼,而僅有乙個直接前驅。3 對於非空的線性表,內部結點 除...