菜鸟问题。.请高手帮帮忙....
///栈的插入和删除....
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //栈结构体的定义。。。。
{
int *base ; //栈底指针。。。。
int *top ; //栈顶指针。。。。
int stacksize ; //初始话分配大小。。。。
} sqstack ;
int initstack(sqstack *l) //新键个栈。。。。。。
{
l=(sqstack *)malloc(stack_init_size*sizeof(int )) ; //进行开空间。。。
if(l==NULL)
return 0 ;
l-> top=l-> base ; //使栈为空。。。
l-> stacksize=stack_init_size ; //初始分配大小。。。
return 1;
}
int gettop(sqstack *l,int *m) //返回栈顶元素。。。
{
if(l==NULL)
return 0;
*m=*(l-> top-1); //栈定元素给m返回。。。。
return 1;
}
int push(sqstack *l,int e) //插入新的栈顶元素。。。。。。。。
{
*(l-> top++)=e;
return 1;
}
int pop(sqstack *l ) //删除栈顶元素。。。。。。
{
if(l==NULL)
return 0;
l-> top=(--l-> top); //去掉栈顶元素。。。。
return 1;
}
int main()
{
sqstack a ;
int i,n,m,j,u;
initstack(&a);
for(i=0;i <10;i++) //输入10个数在栈里面去。。。
{
scanf( "%d ",&n);
*(a.top)=n;
a.top++ ;
}
scanf( "%d ",&m) ; //在输入一个数,,放到栈顶。。
push(&a,m) ; //输入。。。
gettop(&a,&u); //返回栈顶元素。。。
printf( "%d ",u);
a.top=a.base ; //使指针重新指向第一个元素。。。。
for(j=*(a.top);j;j++) //输出插入后的所有元素。。
printf( "%d ",a.top);
pop(&a); //删除。。。
a.top=a.base ;//使指针重新指向第一个元素。。。。
for(j=*(a.top);j;j++)//输出删除后的所以元素。。。。
printf( "%d ",a.top);
return 1;
}
这个程序..编译没有错...可能是算法的某的地方错了。..是高手们帮帮忙,,谢谢了...
[解决办法]
//栈的插入和删除....
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //栈结构体的定义。。。。
{
int *base ; //栈底指针。。。。
int *top ; //栈顶指针。。。。
int stacksize ; //初始话分配大小。。。。
} sqstack ;
//这里修改了
int initstack(sqstack &l) //新键个栈。。。。。。
{
//这里修改了很多
l.base =(int *)malloc(stack_init_size*sizeof(int)) ; //进行开空间。。。
if(l.base == NULL)
return 0 ;
l.top = l.base; //使栈为空。。。
l.stacksize=stack_init_size ; //初始分配大小。。。
return 1;
}
int gettop(sqstack l,int &m) //返回栈顶元素。。。
{
//这里也修改了
if(l.top==l.base)
return 0;
m=*(l.top - 1); //栈定元素给m返回。。。。
return 1;
}
int push(sqstack &l, int e) //插入新的栈顶元素。。。。。。。。
{
//这里少了判断容量够不够的语句。。。= =嘿嘿,看看书把
*(l.top++)=e;
return 1;
}
int pop(sqstack &l ) //删除栈顶元素。。。。。。
{
//这里习惯了
if(l.base==l.top)
return 0;
--l.top; //去掉栈顶元素。。。。
return 1;
}
//多了这个
//打印所有的值
void print(sqstack &l)
{
int* temp = l.base;
while (temp != l.top)
{
printf( "%d ", *temp);
temp++;
}
printf( "\n ");
}
int main()
{
sqstack a ;
int i,n,m,u;
initstack(a);
for(i=0; i <10; i++) //输入10个数在栈里面去。。。
{
scanf( "%d ",&n);
push(a, n) ; //输入。。。
}
print(a);
scanf( "%d ",&m) ; //在输入一个数,,放到栈顶。。
push(a,m) ; //输入。。。
print(a);
gettop(a,u); //返回栈顶元素。。。
printf( "%d\n ",u);
print(a);
pop(a); //删除。。。
print(a);
return 1;
}
.....我上面修改的地方都写出来的了= =,..你抄书上的把?我是照着书上的给你修改了下的