#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define STACK_INIT_SIZE 50
#define STACKINCREMENT 10
///////////定义堆栈
typedef char ElemType;
typedef struct
{
ElemType *top;
ElemType *base;
int stacksize;
}sqStack;
//////////初始化栈
void initStack(sqStack *s)
{
s->base=(ElemType *)malloc(sizeof(ElemType)*STACK_INIT_SIZE); //内存中开辟一段连续空间作为栈空间,首地址赋值给s->base
if(!s->base)
{
printf("空间开辟失败!\n");
exit(0);
}
s->top=s->base; //最开始栈低就是栈顶
s->stacksize=STACK_INIT_SIZE; //最大容量为STACK_INIT_SIZE
}
//////////进栈
void push(sqStack *s,ElemType e)
{
if(s->top - s->base >= s->stacksize) //如果栈满
{
s->base = (ElemType*)realloc(s->base, sizeof(ElemType)*(STACKINCREMENT+ s->stacksize )); //追加空间,首地址赋值给s->base
if(!s->base)
{
printf("空间开辟失败2!\n");
exit(0);
}
s->top=s->base+s->stacksize; //s->top指向栈顶
s->stacksize=s->stacksize+STACKINCREMENT; //设置栈的最大容量
}
*(s->top)=e; //放入数据
s->top++; //自加
}
/////////出栈
void pop(sqStack *s,ElemType *e)
{
if(s->top==s->base) //栈空,无法进行出栈操作
return;
else
*e=*--(s->base); //用e将栈顶元素返回
}
////////计算堆栈s当前的长度
int stackLen(sqStack s)
{
return(s.top-s.base);
}
////////加法运算
void add(sqStack *s1,sqStack *s2,sqStack *s3)
{
char e;
char a1,a2,a3,c=0; ////a1,a2存放从s1,s2中取出来的元素,a3=a1+a2,c中存“进位”
while (stackLen(*s1)!=0 && stackLen(*s2)!=0) //s1,s2不为空
{
pop(s1,&a1);
pop(s2,&a2);
a3=(a1-48)+(a2-48)+48;
if(a3>'9')
{
a3=a3-'9'+47;
c=1 ; //进位
}
else
c=0;
push(s3,a3);
}
if(stackLen(*s1)!=0) //当s2长度为0,s1不为空
{
while (stackLen(*s1)!=0 ) //s1不为空
{
pop(s1,&a1);
a3=a1+c;
if(a3>'9')
{
a3=a3-'9'+47;
c=1 ; //进位
}
else
c=0;
push(s3,a3);
}
}
else if(stackLen(*s2)!=0) //当s1长度为0,s2不为空
{
while (stackLen(*s2)!=0 ) //s2不为空
{
pop(s2,&a2);
a3=a2+c;
if(a3>'9')
{
a3=a3-'9'+47;
c=1 ; //进位
}
else
c=0;
push(s3,a3);
}
}
if(c==1) //如果最后有进位,将字符‘1’入栈S3
push(s3,a3);
}
main()
{
char e;
sqStack s1,s2,s3;
initStack(&s1);
initStack(&s2);
initStack(&s3);
printf("输入第一个任意长整数,按#结尾:");
scanf("%c",&e);
while(e!='#')
{
push(&s1,e);
scanf("%c",&e);
}
getchar(); //接受回车符
printf("输入第一个任意长整数,按#结尾:");
scanf("%c",&e);
while(e!='#')
{
push(&s2,e);
scanf("%c",&e);
}
getchar(); //接受回车符
add(&s1,&s2,&s3);
printf("加法结果为:\n");
while(stackLen(s3)!=0)
{
pop(&s3,&e);
printf("%c",e);
}
}
程序运行后就报错了QAQ 不晓得哪里出问题了
[查看全文]
麻烦看一下,现在的问题就在于如何解决这个cpu占用在大量访问时特别高的问题
程序在下头的帖子里
https://www.gn00.com/t-338623-1-1.html
[查看全文]
本帖最后由 月夜猫妖 于 2013-6-4 22:20 编辑
某个求测试的网站原代码及附件,麻烦各位研究研究,希望能进一步优化这个服务器,似乎个头有些大,度娘盘,希望不会被吞链接。
7z打包版下载地址:
http://pan.baidu.com/share/link?shareid=508969&uk=33928091
zip打包版下载地址:
http://pan.baidu.com/share/link?shareid=330373437&uk=33928091
[查看全文]
设计一个学生成绩管理系统,对上学期本班的学习成绩进行管理,具有录入、查询、排序等功能,将相关信息存储在文件中,能够对指定文件操作。要求1、 每一条记录包括一个学生的学号、姓名、性别、各门课成绩(上学期的科目)、平均成绩。2、 输入功能:可以一次完成若干条记录的输入。3、 显示功能:完成全部学生记录的显示。4、 查找功能:完成按姓名或学号查找学生记录,并显示。5、 排序功能:按学生平均成绩进行排序。6、 插入功能:按平均成绩高低插入一条学生记录。7、 应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观![查看全文]只学过一个学期的C++。到现在还只能黑屏操作。关于第七点完全不能理解。。
还有实验报告什么的也没写过。求助QAQ
如题,我最早为了学JAVA,装的是Eclipse SDK,应该是入门最常用那个吧。
后来学C++,觉得又要装多个VS太麻烦了,就去官网下了一个Eclipse IDE for C/C++ Developers。
后来想学安卓,又下了ADT。反正,每下一个IDE就自带一个Eclipse。
我根本不想要这么多啊,开发软件一个就够了,怎么把这些功能都整合到最初的Eclipse SDK中?
[查看全文]