係統粉 > 電腦問答 > 其他問答

已解決數據結構,程序急救

提問者:小洋還是孩子  |  瀏覽次  |  提問時間: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
相關問答
最新其他問答
解決方法