c语言-C语言求助 急啊啊啊啊啊啊啊

问题描述

C语言求助 急啊啊啊啊啊啊啊

#include
#include
#define null 0
typedef struct node
{
int data;
struct node *next;
}linkstack;
linkstack *top;

linkstack push(linkstack *top,int x) ////入栈
{
linkstack *p;
p=(linkstack
)malloc(sizeof(linkstack));
p->data=x;
p->next=top;
top=p;
return top;
}

linkstack* pop(linkstack *top) //出栈
{
linkstack *p;
if(!top)
{
printf("空链栈");
return null;
}
p=top;
top=top->next;
free(p); //释放存储空间
return top;
}

void print(linkstack *top) //输出栈
{
linkstack *p;
p=top;
while(p!=null) ////刚开始栈顶的next项为空////
{
printf("%dn",p->data);
p=p->next;
}
}

void main()

{

int x,i;
top=(linkstack*) malloc(sizeof(linkstack));
scanf("%d",&x);
top->data=x;//头部赋值。
top->next=null;
// initstack(top);
for(i=1;i<=3;i++)
{
scanf("%d",&x);
top=push(top,x);//返回一个指针。
}
print(top);
top=pop(top);//返回一个指针。

}
怎么加数制转换和字符匹配?

解决方案

任意进制数的转换(链表栈的实现)
http://wenku.baidu.com/link?url=Z-9pODFQbcqTWbuz3pvfoRU3xWxRnXHYXIhYmfQRfZ27DbyD8JBKa7S3ugYkmrTmTX0hDYSXrwzIHuO9cNz8zsQ6adiDYYqtyQgzjl_FDVS

解决方案二:

括号匹配,定义一个变量,初始值0,从左往右扫描文本,遇到前括号+1,遇到后括号-1,判断要求,这个变量始终>=0,并且最终等于0

解决方案三:

如果采纳我的回答,第二个问题可以帮你写完整的代码

解决方案四:

 int foo(char * s)
{
    int x = 0;
    while (x >= 0 && *s != '')
    {
        if (*s == '(') x++;
        if (*s == ')') x--;
        s++;
    }
    return x == 0 ? 1 : 0;
}

int main()
{
    char s1[]="1+(2*3-(4+5)";
    char s2[]="(4+5)*(8-(3+2))";
    char d1 = foo(s1) ? 'y' : 'n';
    printf("%cn", d1);
    char d2 = foo(s2) ? 'y' : 'n';
    printf("%cn", d2);
}
时间: 2024-10-31 00:03:26

c语言-C语言求助 急啊啊啊啊啊啊啊的相关文章

c语言-C语言段错误 非常急 大神们 求助

问题描述 C语言段错误 非常急 大神们 求助 我再写一个c的字典项目 dict.txt文件里有 20多万行单词 运行有段错误 把dict里的 单词减少到1万 就可以了 这是为什么 我用的链表 大神们帮我解决啊 解决方案 编写程序,重要的是做好错误处理,判断出错时是哪句出错了. 1.程序动态申请的内存比较大,应该检查一下是否申请失败,就是malloc之后,判断q是否为NULL 2.数据量这么大,也许有的数据格式不对,应该对fgets是否失败也做个检查. if(ferror(fp)) { print

c语言-简单的C语言程序--小白求助

问题描述 简单的C语言程序--小白求助 #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> int main() { int N,n,i; char t[1000],s[1000]; scanf("%d",&N); while(N--) { gets(t); scanf("%d",&n); for(i=0;i&

vc++-C语言的题目,急求!!!

问题描述 C语言的题目,急求!!! 已知有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),金额je(长整型)五部分组成.其中:金额=单价*数量计算得出.(要求把100个销售记录存入结构数组sell中.按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后输出结构数组sell) 解决方案 http://wenku.baidu.com/link?url=VwK62eHFUyC

printf-c语言代码问题~~求助~~~~~

问题描述 c语言代码问题~~求助~~~~~ 设甲乙两人同年出生,但月日不同.请计算甲乙的年龄差的绝对值.例如输入1997 2 27 3 10(表明甲乙出生在1997年,甲出生在2月27日,乙出生在3 月10日),则输出11(甲乙相差11天) 思路: 1.分别计算甲乙的生日是该年的第多少天(分别用n1,n2表示).计算该年的多少天,可通过函数调用实现; 2.年龄差绝对值计算 #include<stdio.h> int fun(int y,int m,int d) {int s=0; for(in

一个简单的c语言填空 初学者求助

问题描述 一个简单的c语言填空 初学者求助 如图所示 空格处该填什么呢?我填了ptr-stu<3 ptr++ 但是学校的系统说不对 解决方案 ptr < stu + 3; ptr++ 解决方案二: 楼上加一,应该是对的 解决方案三: c语言中指针减法是没有意义的

一个c语言问题 初学者求助

问题描述 一个c语言问题 初学者求助 如图所示 为什么改变for循环的条件 i和j的值会分别变成1 断点在那句 他又是为什么改变的呢 解决方案 关于C语言的一个问题c语言中的一个问题一个有趣的C语言问题 解决方案二: 上一步什么都没做 i和j为什么会变化呢? 然后改成了下图 就都是0了 解决方案三: 最上边是写错了吧? c语言判断相等应该是: i==j 解决方案四: 没看懂你的意思,断点不是在循环之前么?那么改循环和断点处的值有什么关系?

程序运行异常 c语言小问题 求助

问题描述 程序运行异常 c语言小问题 求助 想写一个求大数的斐波那契的程序,需要数组来实现进位,然后进位条件那(就是for循环的条件那里)有问题 ,改一下(改成c!=0或改成a[i-1][j]!=0||a[i-2][j]!=0,合起来就不对了)就可以正常运行,想问下现在这样写有什么问题吗? #include #include const int A=10000; int a[1000][10]; int main() { int n,i,j,c,cc; memset(a,0,sizeof(a))

win7如何更改语言 电脑语言改成英文的方法

今年evad3rs团队发布的iOS 7完美越狱工具有些特殊,中国版iOS7完美越狱工具中,捆绑有太极助手插件,此插件类似流氓插件,容易导致iOS越狱设备出现白苹果现象(国外版无此插件).目前比较好的解决办法是:在使用电脑中越狱的时候,将电脑语言改为英文,可绕过该插件.但很多电脑小白用户还不知道如何更改电脑语言,因此本文将为大家详细介绍下电脑语言更改教程. 如何更改电脑语言 电脑语言改为英文方法 以下笔者以Windows 7系统截图演示,教大家如何更改电脑语言.其他XP或者Win8系统设置方法与此

c语言-C语言递归的内存释放问题

问题描述 C语言递归的内存释放问题 我用C语言实现alpha-beta极小极大算法来做一个棋类游戏的AI,博弈树是用递归的方式构造的,然后发现AI每下一步程序的内存都在增大,原来是因为递归没有释放内存. 耗内存的指针是棋盘 char ** chessboard; 于是我在递归函数的每一个return之前都把 chessboard 给释放了,发现内存还是一直在涨,求解.. 解决方案 把递归函数实现贴出来. 解决方案二: 估计释放的不全.二级指针要分两级释放. 解决方案三: 二级指针的释放是要分两步