數據結構,程序急救
提問者:小洋還是孩子 | 瀏覽 次 | 提問時間: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!='\\0') { 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條答案
沒有很仔細的看,但是我覺得不用使用棧就可以了,分2種情況討論,一種是字符數為奇數,一種是偶數,就像中間開花那樣,從中間下標開始索引向兩頭遍曆就可以了的。
棧的話,也是分奇數和偶數的情況吧,先把一半數據入棧,然後再出棧與剩下半邊數據做比較,有不同就不符合題意~
你既然要用棧,為什麼找不到你建的棧在哪裏?
那個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]!='\0';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;//做完之後還要銷毀棧,這裏我就不寫了。}複製代碼