系统粉 > 电脑问答 > 其他问答

已解决数据结构,程序急救

提问者:小洋还是孩子  |  浏览次  |  提问时间:2017-01-19  |  回答数量:4

数据结构,程序急救 题目:单链表中有几个字符,设计一个算法,使用栈判断该字符串是否中心对称,如abccba就是中心对称的字符串.我写了一个程序是这样的,老是是调不出来..帮忙看一下..谢谢了...#include <stdio.h>#include <stdlib.h>#include <iostream.h>#define max 100typedef struct node{  char data;  struct node *next;}cnode;cnode *create(char s[]){  int i=0;  cnode *h,*p,*r;  while(s!=&#39;\\0&#39;)  {    p=(cnode *)malloc(sizeof(cnode));    p->data=s;    p->next=NULL;    if(i==0)    {      h=p;      r=h;    }    else    {      r->next=p;      r=p;    }    i++;  }

已有4条答案
紫鸢在天

紫鸢在天

回答数:112  |  被采纳数:129

没有很仔细的看,但是我觉得不用使用栈就可以了,分2种情况讨论,一种是字符数为奇数,一种是偶数,就像中间开花那样,从中间下标开始索引向两头遍历就可以了的。

栈的话,也是分奇数和偶数的情况吧,先把一半数据入栈,然后再出栈与剩下半边数据做比较,有不同就不符合题意~
2017-01-19 12:23:33
赞 11
司马★流云

司马★流云

回答数:182  |  被采纳数:65

[s:476] 他们要求要用栈的形式,,,
2017-01-19 12:33:43
赞 18
雷r霆a万y钧

雷r霆a万y钧

回答数:23  |  被采纳数:95

你既然要用栈,为什么找不到你建的栈在哪里?
那个create函数建的是什么?链表?
错误太多了,我写了一个给你参考一下吧。
#define STACK_INIT_SIZE100 //栈的初始空间为100#define STACKINCREMENT10 //每次追加的空间为10#define TRUE 1#define FALSE 0#define ElemType char //定义元素型为字符型。#include <stdlib.h>#include <iostream.h>#define max 100#include <stdio.h>typedef struct{ElemType *base;ElemType *top;int stacksize;}SqStack;/************************************************************************************1.建立一个初始空间为100的栈。************************************************************************************/int Create(SqStack &S) {S.base = (ElemType *)malloc(STACK_INIT_SIZE *sizeof(ElemType)); S.top=S.base;S.stacksize = STACK_INIT_SIZE;return TRUE;}/************************************************************************************2.插入新的栈顶元素。************************************************************************************/int Push(SqStack &S,ElemType e) {/*if(S.top-S.base==S.stacksize) //栈满追加空间。{ S.base = (ElemType *) realloc (S.base,(S.stacksize + STACKINCREMENT)*sizeof(ElemType)); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT;}因为你的字符串不会超过100所以这部分可省略。*/*S.top++ = e; //S.top指向的是栈顶元素的上一个空间。return TRUE;}int main(){char a[max],*p,*q;SqStack S;Create(S);cin>>a;for(int i=0;a[i]!=&#39;\0&#39;;i++) //将字符串输入栈中。 Push(S,a[i]);p = S.base; //P指向栈底元素q = S.top-1; //q指向栈顶元素while(*p == *q) { p++; q--; if(p == q||p == q+1) break;}if(p == q||p == q+1) cout<<a<<"是中心对称。"<<endl;else cout<<a<<"不是中心对称。"<<endl;return 1;//做完之后还要销毁栈,这里我就不写了。}复制代码
2017-01-19 15:37:45
赞 2
未见花名n

未见花名n

回答数:105  |  被采纳数:13

谢谢了
2017-01-19 18:23:21
赞 10
相关问答
最新其他问答
解决方法