数据结构试验回文判断Word文档格式.docx
《数据结构试验回文判断Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构试验回文判断Word文档格式.docx(10页珍藏版)》请在冰点文库上搜索。
![数据结构试验回文判断Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/b62768a6-44fc-4568-a156-da6b5a1b55a0/b62768a6-44fc-4568-a156-da6b5a1b55a01.gif)
入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。
3、算法设计分析:
(1)栈的初始化:
voidInit_stack(SqStack&
S)
{
S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
if(!
S.base)exit(OVERFLOW);
S.top=S.base;
//栈顶与栈尾指针指向栈尾
S.stacksize=STACK_INIT_SIZE;
//return0;
}
(2)入栈
voidPush(SqStack&
S,chare){
if(S.top-S.base>
=S.stacksize)//首先判满
S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREASE)*sizeof(char));
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREASE;
*S.top++=e;
//入一个元素,栈顶指针增加1
(3)出栈:
charPop(SqStack&
S,char&
e){
if(S.top==S.base)exit(OVERFLOW);
e=*--S.top;
//删除栈顶元素并用e返回其值
returne;
(3)回文判断
/*voidCompare(SqStack&
inti,n=0;
intt=0;
charch[100];
charm,e;
charp;
cout<
<
"
请输入您要进行的判断的字符以#作为结束标志:
\n"
;
for(i=0;
i<
100;
i++)
cin>
>
p;
if(p!
='
#'
)//作为结束标志
{ch[i]=p;
else
{n=i;
break;
for(inth=0;
h<
n;
h++)//入栈
{Push(S,ch[h]);
for(intw=0;
w<
w++)
//cout<
debug"
m=Pop(S,e);
//这个地方有错误//出栈
//cout<
m;
if(m==ch[w])//比较字符是否与输入的字符相同
{t++;
if(t==n)
{cout<
输入的字符串是回文编码!
输入的字符串不是回文编码!
}*/
*********************《算法改进》***************************
ch[i];
if(ch[i]=='
)
Push(S,ch[i]);
n++;
n/2;
i++)//回文为对称字符,因此只需判断一半即可
if(m!
=ch[i])
t++;
if(t==n/2)
(4)测试调节:
(5)总结:
通过对回文判断的代码编写,对栈的更加了解,初始化(开辟空间),
入栈、出栈等更加的了解。
但是编写这个代码没有用到队列,以后在课下时间,会编写一个更复杂的代码,加以熟悉。
总的来说,做这个小程序,对栈确实有了进一步的了解,一些基本的操作也更加的熟悉,为以后的课设打下基础。
(6)代码附录:
#include<
iostream.h>
stdio.h>
stdlib.h>
string.h>
#defineSTACK_INIT_SIZE100
#defineSTACKINCREASE10
#defineOVERFLOW0
//usingnamespacestd;
typedefstruct{
char*base;
char*top;
intstacksize;
}SqStack;
=S.stacksize)
//if(S.top==S.base)//exit(OVERFLOW);
//{cout<
empty"
//e='
E'
//}
//else
//{e=*--S.top;
if(S.top==S.base)exit(OVERFLOW);
e=*--S.top;
h++)
//这个地方有错误
if(m==ch[w])
voidCompare(SqStack&
S){
请输入您要进行判断的字符,以'
作为结束的标志:
voidmain()
SqStackS;
Init_stack(S);
Compare(S);