資料結構C語言描述 用順序佇列判斷回文數

2021-07-15 06:33:45 字數 2387 閱讀 4056

所謂回文數就是正著讀跟倒著讀一樣,比如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 對於非空的線性表,內部結點 除...