作者conan77420 (人生就是不停的戰鬥)
看板C_and_CPP
標題[問題]pop跟queue的堆疊問題
時間Fri Jun 11 00:18:24 2010
例子:
輸入data:12345
輸入決定:3
輸出:32145
再輸入決定:4
輸出:41235
其實就是把資料放在一個stack中,
再將指定的數字前的資料(含指定數字)放入queue中,再放回stack中
自己寫了一個很醜的程式碼如下:
想法是直接在儲存資料的array上動手腳
#include<iostream.h>
#include<string.h>
void finalstate(char*,char*,char*);
int main()
{
char data[20];
char temp[20];
char rule[20];
printf("輸入資料:");
scanf("%s",data);
printf("指定資料:"); //輸入一連串的,例如第一次3,第二次是5,則輸入35
scanf("%s",rule); //再讓程式一次跑完顯示最後結果
finalstate(data,rule,temp);
system("pause");
}
void finalstate(char data[],char rule[],char temp[])
{int c=0;
int length=strlen(data);
for(int i=0,j=0,k=0 ; i<length-1 ; i++)
{
while(data[j]!=rule[i]) //似乎是這個while有問題
{temp[k++]=data[j++];}
temp[k++]=data[j++];
k=0;
while(j>=0)
{data[j--]=temp[k++];}
k=0;j=0 ;
}
printf("%s",data);
}
我的執行結果會有問題,不是出現亂碼就是程式跑一下就將視窗關閉
目前debug覺得應該是第一個while有問題
請問該如何修改?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.51.16
推 loveme00835:i 跑出陣列範圍了 06/11 00:27
→ conan77420:i不是到string 的長度而已嗎?應該沒有超過吧@_@ 06/11 00:37
推 loveme00835:data 跟 rule 不一樣長度喔! 所以要分開看 06/11 00:39
→ loveme00835:應該說跑出字串範圍, 所以才會有亂碼 XD 06/11 00:41
→ loveme00835:while 迴圈也沒有讓他比到 '\0' 即結束 06/11 00:42