1、数据结构实验报告回文判断班 级 :学号 :学生姓名 :指导教师 :时间 : 2015 年 5 月 5 日1实验目的:熟悉栈和队列的各项操作,区别栈和队列的操作原理。2实验内容:利用栈的操作完成读入的一个以结尾的字符序列是否是回文序列的判断.回文序列即正读与反读都一样的字符序列;例如:123 123int top;SeqStack;typedef struct NODE/队列结构体char d;struct NODE *next;LinkQN;typedef struct/封装头指针为指针LinkQN *front;LinkQN *rear;LinkQ;void InitStack(SeqSta
2、ck *s)/初始化顺序栈s-top=-1;int push(SeqStack *s,char ch)/入栈if(s-top=MAX-1)return(0);s-top+;s-es-top=ch;return(1);int pop(SeqStack *s,char *x)/出栈if(s-top=-1)return(0);else*x=s-es-top;s-top-;return(1);void InitQuene(LinkQ *q)/链队列初始化q-front=(LinkQN *)malloc(sizeof(LinkQN);if(!q-front)printf(“分配空间失败!“);q-rea
3、r=q-front;q-front-next=NULL;int enter(LinkQ *q,char ch)/入队LinkQN *np;np=(LinkQN *)malloc(sizeof(LinkQN);if(!np)return(0);np-d=ch;np-next=NULL;q-rear-next=np;q-rear=np;return(1);int deleteq(LinkQ *q,char *c)/出队 LinkQN *p;if(q-front=q-rear)return(0);p=q-front-next;q-front-next=p-next;if(q-rear=p)q-rea
4、r=q-front;*c=p-d;free(p);return(0);int huiwen(SeqStack s,LinkQ q)/回文判断int flag=1,m=0,t=1;int i;char ch1,ch2,ch;InitStack(InitQuene(printf(“请输入字符序列当输入字符时输入结束:n“);while(ch!=)ch=getchar();if(ch!=)printf(“%c“,ch);push(enter(m+;printf(“n 输入完成!n“);getchar();if(m%2)if(s.em/2=i(m+1)/2;i+)pop(deleteq(if(ch1!=ch2)flag=0;else flag=0;else flag=0;return(flag);void main()SeqStack s;LinkQ q;int m;m=huiwen(s,q);printf(“n“);if(m)printf(“该字符序列是回文序列!n“);elseprintf(“该字符序列不是回文序列!n“);