简单C++问题纠结一个周了,一运行C++就停止工作,怎么回事啊?高手求救啊?代码如下:

[复制链接]
查看11 | 回复3 | 2011-4-20 09:44:36 | 显示全部楼层 |阅读模式
主函数如下:
#include "stdafx.h"
#define _CRTDBG_MAP_ALLOC
#include "linkStack.h"
#include "windows.h"
#include "iostream.h"
#include
#include
int main(int argc, char* argv[])
{LStack *LS;int m=2;
initialStack(LS);
pushStack(LS,m);
return 0;
}
linkStack.h文件如下:
#include
#include "stdio.h"
typedef int elementType;
#include "iostream.h"
typedef struct LNode
{
elementType data;
struct LNode *next;

} node, *linkStack;
typedef struct{
node *L;
node *top;
int max;

}LStack;
void initialStack(LStack *LS)
{int x;
cout>x;
LS=new LStack;
LS->L=new node;
LS->L->next=NULL;
LS->top=LS->L;
LS->max=x;
coutL->next;
while(p!=NULL)
{
len++;
p=p->next;
}
return len;
}
void pushStack(LStack *LS,elementType x)
{node *p;
if(stackLength(LS)==LS->max)coutdata=x;
p->next=NULL;
LS->top->next=p;

LS->top=p;cout#includeusing namespace std;int main(){int fun(int x,int y);//这里只是在Main函数里声明了有一个叫int fun(int,int)的函数,但并没有定义,里面的int x,inty可简写为int,int,而x,y并没有在Main函数里声明或定义。cin>>x>>y;//而这里想将输入值输入到x,y,这时还没定义或声明x,y,所以得到'x' ,'y': undeclared identifier的错误int x,y,z;//这里才真正声明定义了x,y.z=fabs(x-y);return(z
回复

使用道具 举报

千问 | 2011-4-20 09:44:36 | 显示全部楼层
问题在初始化链栈函数,initialStack形参LS虽然是指向LStack 的指针,但是它不会改变调用的实参LS,因为实参LS也是指向LStack的指针,这就像实参是int型形参也是int型一样,如果要想改变实参LS的内容,形参就应该用指向指针的指针或者把形参的值返回给调用的函数用实参LS接受,改成下面的就不会了LStack * initialStac
回复

使用道具 举报

千问 | 2011-4-20 09:44:36 | 显示全部楼层
问题在这个地方........int main(int argc, char* argv[]){LStack *LS;int m=2;initialStack(LS);......initialStack函数应该传入LS的地址进去,即,改成这样:initialStack(&LS);函数体改成这样void initi
回复

使用道具 举报

千问 | 2011-4-20 09:44:36 | 显示全部楼层
void initialStack(LStack** LS)initialStack(&LS);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行