當前位置:編程學習大全網 - 編程語言 - c語言編程:判定壹個字符是否是回文串(回文串是指從開頭讀和從末尾讀均為相同字符的字符串,例如:abcba

c語言編程:判定壹個字符是否是回文串(回文串是指從開頭讀和從末尾讀均為相同字符的字符串,例如:abcba

采用鏈棧實現算法,代碼如下:

#include"stdio.h"

#include"stdlib.h"

typedef char ElemType;

typedef struct stnode

{

ElemType data;

struct stnode *next;

}StNode, *LinkStack;

int huiwen(char str[])

{

int i = 0;

char ch;

StNode *sl = NULL, *p;

while ((ch = str[i++]) != '\0')

{

p = (StNode *)malloc(sizeof(StNode));

p->data = ch;

p->next = sl;

sl = p;

}

i = 0;

while (sl != NULL)

{

p = sl;

ch = p->data;

sl = sl->next;

free(p);

if (ch != str[i++])

return 0;

}

return 1;

}

void main()

{

char string[20];

int hw;

printf("input a string:");

gets_s(string);

hw = huiwen(string);

if (hw) printf("The string is HUIWEN.");

else printf("The string is not HUIWEN.");

}

擴展資料

棧的特點是先進後出,而鏈表中的頭插法正好滿足我們的需求,因為頭插法後面插入的節點位於鏈表的開頭,所以我們可以使用頭插法來插入節點,在彈出節點的時候彈出鏈表的第壹個節點即可,而第壹個節點是很容易找出來的,所以可以很輕松地實現棧的壓入和彈出操作。

棧是壹種是壹種實現數據“先進後出”的存儲結構,分為靜態棧和動態棧,靜態棧就是以數組的方式存儲數據,動態棧是以鏈表的方式存儲數據;對棧的操作算法,常用的就是壓棧和出。

棧的創建:

在創建壹個數據結構之前,必須知道這種數據結構由哪些參數組成,棧的本質既然是個鏈表,它必然由很多節點組成;為了實現“先進後出”這種數據結構,我們需要引進兩個參數,壹個是棧頂指針(pTop),始終指向棧頂元素。壹個參數是棧底指針(pBottom),始終指向棧底元素。

我們知道為了方便描述鏈表的各種操作,引進了頭節點的概念,即為每個鏈表前面加壹個頭節點,但並存放有效數據;同樣,為了實現棧的操作,我們同樣需要壹個不存放任何有效數據的節點,並且棧底指針始終指向該節點。

  • 上一篇:煙花頓時忽然詞語描寫寫100字作文
  • 下一篇:高中信息學業水平測試中,操作題:如何保存壹個網頁
  • copyright 2024編程學習大全網