您的位置:

c语言字符串栈,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;

}