数据结构C语言队列-回文

2020-02-20 23:19

实验课题一:回文(palindrome)是指一个字符串从前面读和从后面读都一样,仅使用若干栈和队列、栈和队列的ADT函数以及若干个int类型和char类型的变量,设计一个算法来判断一个字符串是否为回文。假设字符串从标准输入设备一次读入一个字符,算法的输出结果为true或者false。

可以用一些字符串测试输出结果,如: \, \等

#include #include #define m 100 typedef struct {

char stack[m]; int top; }stackstru;

typedef struct {

char queue[m]; int front; int rear; }queuestru;

void main() {

int stinit(stackstru *s); //初始化顺序栈 int stempty(stackstru *s); //判断栈是否为空 int stpush(stackstru *s,char x); //入栈 char stpop(stackstru *s); //出栈

int quinit(queuestru *q); //初始化循环队列 int quempty(queuestru *q); //判断队列是否为空 int enqueue(queuestru *q,char e); //入队

char dequeue(queuestru *q); //出队 char c; int flag=0;

stackstru *s=(stackstru *)malloc(sizeof(stackstru)); queuestru *q=(queuestru *)malloc(sizeof(queuestru)); stinit(s); quinit(q);

printf(\

while((c=getchar())!='!') {

putchar(c); stpush(s,c); enqueue(q,c); }

printf(\

printf(\ while(stempty(s)) {

if(stpop(s)==dequeue(q)) {

flag=1; continue; }

else {

flag=0;

break; } }

if(flag==1)

printf(\ else

printf(\}

int stinit(stackstru *s) {

s->top=0; return 1;

} //初始化栈 int stempty(stackstru *s) {

if(s->top==0) {

return 0; } else {

return 1;

}

} //判断栈是否空

int stpush(stackstru *s,char x) {

if(s->top==m) //栈满 {

printf(\ return 0;

}

else //栈未满 {

s->top=s->top+1; //栈顶后移 s->stack[s->top]=x; //字符入栈 return 1; }

} //入栈操作 char stpop(stackstru *s) {

char y;

if(s->top==0) //栈为空 {

printf(\

return ' '; //返回空格 }

else //栈不为空 {

y=s->stack[s->top]; //取出栈顶元素 s->top=s->top-1; //栈顶指示移动 return y; }

} //出栈操作 int quinit(queuestru *q) {

q->front=0; q->rear=0; return 1;

} //初始化为一个空的循环队列 int quempty(queuestru *q) {

if(q->front==q->rear) //队头和队尾相等 {

return 0;

} else {

return 1; }

} //判断队列是否为空 int enqueue(queuestru *q,char e) {

if((q->rear+1)%m==q->front) //队列已满 {

printf(\提示信息 return 0; } else {

q->queue[q->rear]=e; //入队

q->rear=(q->rear+1)%m; //移动队尾指针 return 1; }

} //入队操作 char dequeue(queuestru *q) {

char f;

if(q->front==q->rear) //队列为空 {

printf(\ //提示信息 return 0; } else {

f=q->queue[q->front]; //取出队首元素 q->front=(q->front+1)%m; //移动对头指针 return f; }

} //出队操作


数据结构C语言队列-回文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于下发《临床输血管理制度》的通知

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: