c语言字符串栈,c语言字符串入栈

发布时间:2022-11-24

本文目录一览:

  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; i < strlen(s); i++)
{
    s[i] = '\0'; //这里不是很明白,你赋值一个{}是什么意思,但如果是想清0,就改成这样写!
}

c语言栈的应用输入一个字符串,删除其中相邻的两个相同字符?

#include <stdio.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;
}