实现链式栈的基本操作:入栈、出栈、取栈顶元素、判定栈空、栈满。
答案:3 悬赏:0 手机版
解决时间 2021-11-12 23:01
- 提问者网友:献世佛
- 2021-11-12 10:45
实现链式栈的基本操作:入栈、出栈、取栈顶元素、判定栈空、栈满。
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-11-12 12:18
#include
#include
struct stack
{
int number;
struct stack *next;
};
struct stack *top;//指向栈顶
struct stack *p;//临时指针
//创建链栈
void create(int first_value)
{
p = (struct stack*)malloc(sizeof(struct stack));//申请内存空间
p->number = first_value;//给栈底赋值
p->next = NULL;//栈底的指针为空
top = p;//栈顶指向栈底
}
//进栈
void input(int value)
{
p = (struct stack*)malloc(sizeof(struct stack));//申请内存空间
p->number = value;//赋值
p->next = top;//指向原来的栈顶
top = p;//栈顶往上移动一位
}
//出栈
void output()
{
p = top;//p = 栈顶
top = top->next;//栈顶往下移动一位
free(p);//释放p
}
//清空栈
void clear()
{
while(top->next != NULL)//如果不是栈底
output();//出栈
free(top);//释放栈顶
}
//取栈顶元素
int topElement()
{
return top->number;
}
int main()
{
int i;
create(0);
for(i=1;i<=10;i++)
input(i);
//clear();
printf("
栈的内容:
");
for(p=top;;p=p->next)
{
printf("%d
",p->number);
if(p->next == NULL)
break;
}
printf("栈顶元素=%d
",topElement());
}
#include
struct stack
{
int number;
struct stack *next;
};
struct stack *top;//指向栈顶
struct stack *p;//临时指针
//创建链栈
void create(int first_value)
{
p = (struct stack*)malloc(sizeof(struct stack));//申请内存空间
p->number = first_value;//给栈底赋值
p->next = NULL;//栈底的指针为空
top = p;//栈顶指向栈底
}
//进栈
void input(int value)
{
p = (struct stack*)malloc(sizeof(struct stack));//申请内存空间
p->number = value;//赋值
p->next = top;//指向原来的栈顶
top = p;//栈顶往上移动一位
}
//出栈
void output()
{
p = top;//p = 栈顶
top = top->next;//栈顶往下移动一位
free(p);//释放p
}
//清空栈
void clear()
{
while(top->next != NULL)//如果不是栈底
output();//出栈
free(top);//释放栈顶
}
//取栈顶元素
int topElement()
{
return top->number;
}
int main()
{
int i;
create(0);
for(i=1;i<=10;i++)
input(i);
//clear();
printf("
栈的内容:
");
for(p=top;;p=p->next)
{
printf("%d
",p->number);
if(p->next == NULL)
break;
}
printf("栈顶元素=%d
",topElement());
}
全部回答
- 1楼网友:一把行者刀
- 2021-11-12 12:53
什么语言?
c?
c++?
c?
c++?
- 2楼网友:人间朝暮
- 2021-11-12 12:39
#include
#include
#define NULL 0
typedef struct snode
{
int data;
struct snode *next;
}stack;
//
void push( stack **s,int x)
{
stack *p;
p=( stack *)malloc(sizeof(snode));
//cin> > x;
p-> data=x;
p-> next=*s;
*s=p;
}
//
void pop( stack **s )
{
stack *p;
int e = 0 ;
p=(stack *)malloc(sizeof(snode));
if(NULL == (*s))
cout < < "空战 ";
else
{
p=*s;
e=p-> data;
*s=p-> next;
cout < < "出栈的数是:\t " < }
free(p);
}
//
void print(stack **s)
{
//stack *s;
if( *s == NULL)
cout < < "空栈 ";
else if((*s)!=NULL)
{
cout < < "出栈的数是:\t " < <(*s)-> data < *s = (*s)-> next;
}
}
//
void stackempty(stack **s)
{
//stack *s;
if(*s == NULL)
cout < < "栈空 " < else
cout < < "栈非空 " < }
//
void main()
{
stack *s= NULL ;// = new stack();
int f,x,e;
puts( "输入1(入栈)或2(出栈)\n ") ;
cin> > f;
while(1)
{
switch (f)
{
case 1:
puts( "输入入栈的数:\t ") ;
cin> > x;
push(&s,x);
print(&s);
stackempty(&s);
break;
case 2:
pop(&s);
print(&s);
stackempty(&s);
break;
default:
break ;
}
break ;
}
system( "pause ") ;
}
#include
#define NULL 0
typedef struct snode
{
int data;
struct snode *next;
}stack;
//
void push( stack **s,int x)
{
stack *p;
p=( stack *)malloc(sizeof(snode));
//cin> > x;
p-> data=x;
p-> next=*s;
*s=p;
}
//
void pop( stack **s )
{
stack *p;
int e = 0 ;
p=(stack *)malloc(sizeof(snode));
if(NULL == (*s))
cout < < "空战 ";
else
{
p=*s;
e=p-> data;
*s=p-> next;
cout < < "出栈的数是:\t " <
free(p);
}
//
void print(stack **s)
{
//stack *s;
if( *s == NULL)
cout < < "空栈 ";
else if((*s)!=NULL)
{
cout < < "出栈的数是:\t " < <(*s)-> data <
}
}
//
void stackempty(stack **s)
{
//stack *s;
if(*s == NULL)
cout < < "栈空 " <
cout < < "栈非空 " <
//
void main()
{
stack *s= NULL ;// = new stack();
int f,x,e;
puts( "输入1(入栈)或2(出栈)\n ") ;
cin> > f;
while(1)
{
switch (f)
{
case 1:
puts( "输入入栈的数:\t ") ;
cin> > x;
push(&s,x);
print(&s);
stackempty(&s);
break;
case 2:
pop(&s);
print(&s);
stackempty(&s);
break;
default:
break ;
}
break ;
}
system( "pause ") ;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯