题目:
设单链表中存放n个字符,试编制一个程序,使用栈
判断该字符串是否中心对称,如xyzzyx为中心对称
字符串.
提示:先使用create()函数从用户输入的字符串创
建相应的单链表,然后调用judge()函数判断是否为中
心对称字符串.在judge()中先将字符串进栈,然后将栈
中的字符逐个与单链表中的字符进行比较.
程序为:#include"stdio.h"
#include"stdlib.h"
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 10
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef char ElemType;
typedef char SElemType;
typedef int Status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
typedef struct SqStack{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status GetElem_L(LinkList L,int i,ElemType &e){
int j;
LinkList p;
p=L->next; j=1;
while(p&&j<i){
p=p->next; ++j;
}
if(!p||j>i) return ERROR;
e=p->data;
return OK;
}
Status CreateList_L(LinkList &L){
LinkList p;
int i,n;
printf("请输入字符串的个数:");
scanf("%d",&n);
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i){
p=(LinkList)malloc(sizeof(LNode));
printf("输入第""%d""个字符:",i);
scanf("%s",&p->data);
printf("\n");
p->next=L->next; L->next=p;
}
return OK;
}
int ListLength_L(LinkList L){
int i=0;
LinkList p;
p=L->next;
while(p!=NULL) {p=p->next; i++;}
return i;
}
Status InitStack(SqStack &S){
S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack&S,SElemType e){
if(S.top-S.base>=S.stacksize){
S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Pop(SqStack&S,SElemType&e){
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}
Status judge(int n){
int m=n,i;
char e,d;
LinkList head;
SqStack S;
for(i=1;i<=m;++i){
GetElem_L(head,i,e);
Push(S,e);
}
for(i=1;i<=m;++i){
GetElem_L(head,i,e);
Pop(S,d);
if(e!=d){
printf("%s""输入的字符串不中心对称");
break;
}
if(i==m-1&&e==d) printf("%s""输入的字符串中心对称");
}
return OK;
}
void main(){
int n;
LinkList L;
SqStack C;
InitStack(C);
CreateList_L(L);
n=ListLength_L(L);
judge(n);
}
调试时没有错误和警告但有“遇到问题需要关闭”的画面出现,经测试不是VC软件的问题,希望大家帮帮忙,解决这个问题!