1樓:皇家庶民
#include
#include
#include
#include
#define maxsize 100
typedef struct
sequenlist;
void change(char *ch)//將字串去掉空格並將字母統一轉換成小寫
ch[i]='\0';
for(p=ch;*p!=0;p++)
*p=tolower(*p);
}int main()
i=0;
while(s->last>=0)
p[strlen(ch)]='\0';
flag=strcmp(ch,p);
if(flag==0)
printf("該字串是回文!\n");
else
printf("該字串不是回文!\n");
#include
#include
#include
#include
typedef struct
seqstack;
void change(char *ch)//將字串去掉空格並將字母統一轉換成小寫
ch[i]='\0';
for(p=ch;*p!=0;p++)
*p=tolower(*p);
}int main()
i=0;
while(s->top>=0)
p[strlen(ch)]='\0';
flag=strcmp(ch,p);
if(flag==0)
printf("該字串是回文!\n");
else
printf("該字串不是回文!\n");
#include
#include
#include
#define m 100
typedef struct
stackstru; // 定義棧
typedef struct queuestru; //定義佇列
int main()
}while(stempty(s)) //棧中還有元素
else //字元不匹配
}if(flag==1)
printf("該字串是回文!\n"); //標誌位為1,完全匹配,是回文
else
printf("該字串不是回文!\n");//標誌位為0,不完全匹配,不是回文
return 0;
}int stinit(stackstru *s)
//初始化棧
int stempty(stackstru *s)
else
} //判斷棧是否空
int stpush(stackstru *s,char x)
else //棧未滿
} //入棧操作
char stpop(stackstru *s)
else //棧不為空
} //出棧操作
int quinit(queuestru *q)
//初始化為乙個空的迴圈佇列
int quempty(queuestru *q)
else
} //判斷佇列是否為空
int enqueue(queuestru *q,char e)
else
} //入隊操作
char dequeue(queuestru *q)
else
} //出隊操作
本題主要要先把字串進行轉換成常規形式,前兩種我是用乙個change()子函式把它去掉空格,再把所有字母統一成小寫形式,然後進行常規判斷,其實適用於前兩種有個更簡單的方法,定義乙個陣列儲存轉換後的字串,利用strrev函式反轉字串,再用strcmp進行判斷就可以了~第三種方法我是參考資料後改造了一下,注意這裡面是逐個讀取字元進取輸入@結束的~
手寫不易,原創更難~
不懂可追問,請及時採納哦~~
2樓:
用順序表 用棧 現在就想到這兩個
求助資料結構大神,題目是編寫乙個演算法判斷指定的字元向量是否為回文,我編寫乙個程式一直判斷為不是回文 100
3樓:上下求索君不見
錯誤的地方有兩處:
出棧函式"int pop_linkedstack(linkedstack top,elemtype x)"應該改為"int pop_linkedstack(linkedstack top,elemtype *x)",也就是說傳出引數時應該用指標變數。
回文判斷函式"int huiwen(char *line)"的while迴圈出錯,應該先將j初始化未len-1,即在while之前加一句"j = len - 1;",同時後面的j++也要變成j--。另外,進入while迴圈之後的第一條出棧語句呼叫時就不能是值呼叫,而要變成位址呼叫,也就是改成「 pop_linkedstack(top, &x);」。
下附完整**,親測通過!
#include
#include
#include
#define maxsize 256
typedef char elemtype;
typedef struct linkedstacknode
linkedstacknode, *linkedstack;
//鏈棧的初始化
linkedstack init_linkedstack()
//將資料元素x插入鏈棧的棧頂
int push_linkedstack(linkedstack top, elemtype x)
else
}//出棧
int pop_linkedstack(linkedstack top, elemtype *x)
else
}//判斷棧是否為空
int linkedstack_empty(linkedstack top)
else
}//判斷是否為回文
int huiwen(char *line)
len = strlen(line);
for (i = 0; i
資料結構作業 用結點大小為一的單鏈表測試字串是否為回文
4樓:匿名使用者
的資料否有下乙個節點的資料大,如果存在乙個節點的資料比下乙個節點大,說明不是遞增。反之如果考察到最後乙個節點之前都比下乙個節點小,那麼就是遞增
如果節點定義如下:
typedef struct lnodelnode,*linklist
演算法這樣寫:
status judge (linkedlist l)//表頭為l} 沒有注釋的:
status judge (linkedlist l)} 就這麼短。。。不知道上面那哥們怎麼做的
資料結構演算法的時間複雜度資料結構與演算法,請問時間複雜度是怎麼判定的?
按照分析慣例,假設所有單一運算的時間複雜度均為1 x n 1 while x y 1 y 1 4 兩次加法 1次乘法 1次比較 y y 1 1 時間複雜度 1 4 1 x 迴圈次數 迴圈次數是由n和y的初始值決定的,假設迴圈次數為n,y的初始值為y0,y的結束狀態為yn,有 x yn 1 yn 1 ...
資料結構c語言版,出隊入隊及依次輸出佇列的操作
你的 是想把front到rear的值全部輸出但是你下面的操作自己檢查一下沒有改變front的值,也沒有改變rear的值,所以front!rear是死迴圈 如果好一點的話 void printqueue linkqueue q 依次輸出佇列 while q front q rear 老師告訴我說是這裡...
程式設計題目不太會求大牛幫忙資料結構的題目
先把所有資料按l 4個一組進行分組,可存放在乙個二維陣列中int strs new int 4 4 strs 0 0 12,strs 0 1 22,strs 0 2 13,strs 0 3 8 strs 1 0 28,strs 1 1 33,strs 1 2 38,strs 1 3 42.然後對陣列...