亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C語言怎么用棧實現回文判斷的算法

小億
133
2023-12-08 00:49:46
欄目: 編程語言

要用棧實現回文判斷的算法,可以按照以下步驟進行:

  1. 首先,定義一個棧結構用于存儲字符。

  2. 將待判斷的字符串依次入棧,直到字符串的末尾。

  3. 從字符串的開頭開始,依次將字符出棧,并與字符串中對應位置的字符進行比較。

  4. 如果出棧的字符與字符串中對應位置的字符不相等,則說明該字符串不是回文,可以立即返回結果。

  5. 如果出棧的字符與字符串中對應位置的字符相等,繼續進行下一輪比較,直到棧為空或比較完整個字符串。

  6. 如果棧為空且比較完整個字符串,說明該字符串是回文,返回結果為真;否則返回結果為假。

以下是一個用棧實現回文判斷的示例代碼:

#include <stdio.h>
#include <string.h>

#define MAX_SIZE 100

// 定義棧結構
typedef struct {
    char data[MAX_SIZE];
    int top;
} Stack;

// 初始化棧
void initStack(Stack *s) {
    s->top = -1;
}

// 入棧
void push(Stack *s, char c) {
    s->data[++(s->top)] = c;
}

// 出棧
char pop(Stack *s) {
    return s->data[(s->top)--];
}

// 判斷字符串是否為回文
int isPalindrome(char *str) {
    Stack s;
    initStack(&s);
    int len = strlen(str);
    int i;

    // 將字符串依次入棧
    for (i = 0; i < len; i++) {
        push(&s, str[i]);
    }

    // 逐個字符出棧并比較
    for (i = 0; i < len; i++) {
        if (pop(&s) != str[i]) {
            return 0; // 不是回文
        }
    }

    return 1; // 是回文
}

int main() {
    char str[MAX_SIZE];

    printf("請輸入一個字符串:");
    scanf("%s", str);

    if (isPalindrome(str)) {
        printf("%s 是回文\n", str);
    } else {
        printf("%s 不是回文\n", str);
    }

    return 0;
}

運行該程序時,會提示輸入一個字符串,然后判斷該字符串是否為回文。如果是回文,則輸出“是回文”,否則輸出“不是回文”。

0
海丰县| 秭归县| 灵武市| 公安县| 太仆寺旗| 太仓市| 南开区| 会同县| 文水县| 甘洛县| 上高县| 山阴县| 东平县| 简阳市| 湘西| 靖宇县| 广汉市| 深泽县| 淮南市| 化州市| 黎平县| 大方县| 开阳县| 德江县| 武山县| 平安县| 镇巴县| 比如县| 汉源县| 罗山县| 治县。| 高青县| 梨树县| 盐池县| 鹤壁市| 沁源县| 通城县| 千阳县| 万载县| 墨脱县| 溧阳市|