中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C語言中利用隊列數據結構識別回文

小樊
82
2024-04-26 17:30:01
欄目: 編程語言

回文是指從前往后讀和從后往前讀是一樣的字符串,例如"level"和"radar"。下面是一個利用隊列數據結構來識別回文的C語言代碼示例:

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

#define MAX_SIZE 100

typedef struct {
    char data[MAX_SIZE];
    int front;
    int rear;
} Queue;

Queue* createQueue() {
    Queue* q = (Queue*)malloc(sizeof(Queue));
    q->front = -1;
    q->rear = -1;
    return q;
}

void enqueue(Queue* q, char value) {
    if (q->rear == MAX_SIZE - 1) {
        printf("Queue is full\n");
    } else {
        q->rear++;
        q->data[q->rear] = value;
    }
}

char dequeue(Queue* q) {
    if (q->front == q->rear) {
        printf("Queue is empty\n");
        return '\0';
    } else {
        q->front++;
        return q->data[q->front];
    }
}

int isPalindrome(char* str) {
    Queue* q = createQueue();
    
    int len = strlen(str);
    for (int i = 0; i < len; i++) {
        enqueue(q, str[i]);
    }
    
    for (int i = 0; i < len; i++) {
        char c = dequeue(q);
        if (c != str[i]) {
            return 0;
        }
    }
    
    return 1;
}

int main() {
    char str[MAX_SIZE];
    printf("Enter a string: ");
    scanf("%s", str);
    
    if (isPalindrome(str)) {
        printf("%s is a palindrome\n", str);
    } else {
        printf("%s is not a palindrome\n", str);
    }
    
    return 0;
}

在這個示例中,我們首先定義了一個隊列結構Queue,并實現了創建隊列、入隊和出隊等基本操作。然后我們定義了isPalindrome函數來判斷輸入的字符串是否為回文。在該函數中,我們首先將字符串中的字符逐個入隊,然后再逐個出隊并與原字符串進行比較,如果有任何一個字符不相同,則返回0,表示不是回文;如果所有字符都相同,則返回1,表示是回文。最后在main函數中,我們接收用戶輸入的字符串,并調用isPalindrome函數進行判斷并輸出結果。

0
合川市| 普宁市| 瓦房店市| 平陆县| 蛟河市| 枝江市| 措美县| 巴楚县| 时尚| 宜君县| 渭南市| 重庆市| 萝北县| 濉溪县| 棋牌| 西充县| 金坛市| 屏山县| 高阳县| 慈利县| 澎湖县| 武邑县| 都安| 云霄县| 茶陵县| 台前县| 东源县| 永顺县| 吴江市| 黑河市| 天镇县| 临沧市| 濮阳县| 建德市| 林周县| 钟祥市| 拜城县| 尤溪县| 昆明市| 宁武县| 浦江县|