本文目錄一覽:
- 1、c語言關於棧的問題
- 2、c語言中用棧或者表做字元串的連接,可以輸入字元串
- 3、c語言定義字元數組棧的問題
- 4、c語言棧的應用輸入一個字元串,刪除其中相鄰的兩個相同字元?
- 5、C語言 (棧的應用)任意輸入一個字元串 逆序輸出
c語言關於棧的問題
首先你題目沒理解正確
(1)如果字元串中的應匹配的左括弧和右括弧不是同一類型,輸出wrong
就是([123)這種應該輸出wrong,而不是missing right
其次你的思路不太對,既然知道這題是考你棧結構的你就應該用棧解決啊,給你幾個提示:
1、這題只用一個數組作為棧的物理空間就夠了(當然還要有個char數組存放輸入)
2、這題你用不著保存數字和右括弧
3、絕大多數match以外的字元串不用掃描全就可以輸出了,不然就算不WA可能要TO了
4、push pop peek這三種棧的操作都要用上
(演算法思路,想獨立完成就別看)
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
從左往右掃描字元串
遇到左括弧壓棧
遇到右括弧去和棧頂匹配
棧已經空了沒棧頂: miss left
匹配成功:彈出棧頂繼續掃描
匹配不成功:wrong
遇到字元結尾
棧空了:match
否則:miss right
遇到其他數字啥的忽略掉
c語言中用棧或者表做字元串的連接,可以輸入字元串
先定義一個棧,輸入一個字元串,利用循環語句把你輸入的字元串放到棧中,假設你輸入的是n個字元的字元串,則,此時棧的top指針指向n-1,這個位置,再輸入你要連接的這個字元串(第二個字元串,假設為x個字元),再利用循環語句,從top +1的位置依次將第二個字元串的各個字元放入棧中,此時top指針指向x+n-1的位置…………..不知 是不是你要的答案
c語言定義字元數組棧的問題
char stack[100] = {0}; //數組給初值,不能是{}必須,至少要有一個值!
for(int i=0;istrlen(s);i++)
{
s[i] =’\0′; //這裡不是很明白,你賦值一個{}是什麼意思,但如果是想清0,就改成這樣寫!
}
c語言棧的應用輸入一個字元串,刪除其中相鄰的兩個相同字元?
#includestdio.h
int main(){
char s[1000];
int i=0;
scanf(“%c”,s[i]);
while(s[i]!=’\n’){
scanf(“%c”,s[++i]);
if(s[i]==s[i-1])
i-=2;
}
s[i]=’\0′;
if(s[0])puts(s);
else printf(“None”);
}
C語言 (棧的應用)任意輸入一個字元串 逆序輸出
#include
stdio.h
#include
string.h
/*
函數名稱:字元串逆序輸出
函數功能:字元串逆序輸出
輸入參數:原字元串
返回參數:逆序字元串
*/
void
f
(char
s[1000])
{
int
i,
len;
len
=
strlen(s);
for
(i
=
len-1;
i
=
0;
i–)
putchar(s[i]);
}
int
main()
{
char
s[1000];
while
(gets(s))
{
f(s);
printf(“\n”);
}
return
0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287260.html