当前位置:系统粉 > 电脑问答 > 其他问答 > 数据结构,程序急救

数据结构,程序急救

提问者:小洋还是孩子  |  浏览 次  |  提问时间: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

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

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

司马★流云

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

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

雷r霆a万y钧

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

2017-01-19 15:37:45
你既然要用栈,为什么找不到你建的栈在哪里?
那个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;//做完之后还要销毁栈,这里我就不写了。}复制代码
赞 2
未见花名n

未见花名n

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

2017-01-19 18:23:21
谢谢了
赞 10
解决方法
  • 微信小程序发布数据助手 远程查看数据

    微信小程序发布数据助手 远程查看数据

    5月13日消息:动作不断的微信小程序现在又有新东西了,这次发布的是“小程序数据助手”,该工具将帮助小程序的开发和运营者更方便地查看运营数据。  据悉,“小程序数据助手”支持相关开...

  • 结束程序进程,结束程序进程方法的方法 怎么结束程序进程,结束程序进程方法

    结束程序进程,结束程序进程方法的方法 怎么结束程序进程,结束程序进程方法

    今天给大家带来结束程序进程,结束程序进程方法的方法,怎么结束程序进程,结束程序进程方法,让您轻松解决问题。相信很多人都遇到过,有些程序,虽然是把主界面关闭,程序也退出了,但是还是有...

  • excel教程之入门(72)数据排序

    excel教程之入门(72)数据排序

    今天我们来学习数据的排序具体方法如下:1我们在excel软件中建立这样一个表格2然后我们选中如图所示的表格3点击上面的数据——排序4把主要关键字调为总分,后面的升序就是从底到高排列...

  • 苹果电脑系统如何急救 苹果电脑系统急救常识

    苹果电脑系统如何急救 苹果电脑系统急救常识

    今天给大家带来苹果电脑系统如何急救,苹果电脑系统急救常识,让您轻松解决问题。苹果Mac OSX是苹果公司根据苹果电脑硬件的要求去开发的,是以UNIX系统为核心。因而是一个功能很强,...

版权信息

Copyright @ 2011 系统粉 版权声明 最新发布内容 网站导航