《回文字符的判断(栈与队列)代码.doc》由会员分享,可在线阅读,更多相关《回文字符的判断(栈与队列)代码.doc(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、回文字符的判断(栈与队列)代码/头文件/code。hdefine TRUE 1#define FALSE 0define ok 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW 2define NULL 0typedef int Status;/主函数/test.cpp#include code.h #include stdlib。h include include define STACK_SIZE 100 /* 栈初始向量大小 */define STACKINCREMENT 10 /*队列的操作函数*typedef char QEl
2、emType;typedef struct QNodeQElemType data;struct QNode *next;QNode,QueuePtr;typedef struct QueuePtr front; /队首QueuePtr rear; /队尾 LinkQueue;Status InitQueue(LinkQueue Q) /构造空队列Q。front=Q。rear =(QueuePtr)malloc(sizeof(QNode);if(!Q。front) exit(OVERFLOW);Q。frontnext=NULL;return ok;Status DestoryQueue(Lin
3、kQueue Q) /销毁队列while(Q.front )Q。rear=Q.frontnext;free(Q.front);Q。front=Q。rear;return ok;Status EnQueue (LinkQueue Q,QElemType e) /在队尾插入元素QNode *p;p=(QueuePtr)malloc(sizeof(QNode); if(!p) exit (OVERFLOW);p-data=e;pnext=NULL;Q。rear-next=p;Q。rear=p;return ok;Status DeQueue(LinkQueue Q,QElemTypee) /删除队首
4、元素,并返回其值if(Q。front=Q。rear) return ERROR;QNode *p;p=Q。front-next;e=pdata;Q。frontnext=p-next;if(Q。rear=p) Q。rear=Q.front;free(p);return ok;/*栈的操作函数*typedef char ElemType;typedef struct SqStack ElemType *base; /* 栈不存在时值为NULL */ ElemType top; / 栈顶指针 / int stacksize ; / 当前已分配空间,以元素为单位 SqStack ;Status Ini
5、tStack(SqStack s) /*构造空栈s*/ ElemType *a=(ElemType *)malloc(10sizeof(ElemType); realloc(a,STACK_SIZE sizeof(ElemType); s.base=(ElemType *)malloc(STACK_SIZE sizeof(ElemType)); if (! s。base) return ERROR; /存储分配失败 s.top=s。base ; / 栈空时栈顶和栈底指针相同 */ s。stacksize=STACK_SIZE; return ok ;Status GetTop(SqStack
6、S,ElemType e) /返回栈顶元素 if(S.top=S.base) return ERROR;e=(S。top-1);return ok; Status push(SqStack S,ElemType e) /进栈if (S.topS.base=S。stacksize) return ERROR; *S.top=e; S。top+ ; /* 栈顶指针加1,e成为新的栈顶 */ return ok;Status pop( SqStack &S, ElemType e ) /出栈if ( S。top= S。base ) return ERROR ; / 栈空,返回失败标志 */ S.to
7、p- ;e=S。top ; return ok ; int stackLength( SqStack S) /栈的长度 return S。top-S。base ; Status StackEmpty( SqStack S) /判断栈是否为空 if ( S。top= S.base ) return TRUE;else return FALSE; /*比较函数*int compare()SqStack T;LinkQueue R;InitStack(T);InitQueue(R); char ch;char a,b;printf(”请输入要判断的字符串以作为结束符n);while((ch=getchar()!=)push(T,ch); /进栈EnQueue(R,ch); /入队 while(T。top!=T.base) pop(T,a); /出栈DeQueue(R,b); /出队 if(a!=b) return ERROR; /比较字符是否相同else return ok;/*主函数*void main() int r=compare(); if(r=1)printf(%s”,”此为回文字符序列n); elseprintf(s”,此不为回文字符序列n);
限制150内