【数据结构】如何用c语言实现静态链表(栈方法)

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define STACK_INNT_SIZE 100//存储空间初始分配量
#define STACKINCREMENT 10//存储空间分配不足时增量
//创建栈的类型sqstack
typedef struct 
{
 int *top;//栈顶指针
 int *base;//栈底指针,构造前或者销毁后,base=NULL
 int stacksize;//栈内空间
}sqstack;
//创造空栈

void initstack(sqstack *s)
{
	s->base=(int *)malloc(STACK_INNT_SIZE*sizeof(int));//开辟一片空间
	if(!s->base)
	{
		printf("malloc filed.\n");
		exit(0);
	}//若失败返回
	s->top=s->base;//栈顶指针等于栈底指针
	s->stacksize=STACK_INNT_SIZE;
	//栈的大小等于申请的存储空间初始分配量构造空栈
}
//入栈操作

void push(sqstack *s,int e)//传入栈s和要存入的数字e
{
	if(s->top-s->base>=s->stacksize)//内存发生溢出,这时候就需要再次重新增加内存
	{
		s->base=(int *)realloc(s->base,(s->stacksize+STACKINCREMENT)* sizeof(int));
		//申请扩大空间
        if(!s->base)
	    {
		printf("malloc filed.\n");
		exit(0);
	    }//申请空间失败
		s->top=s->base+s->stacksize;//栈顶等于扩充后的栈底加上原来的栈大小
		s->stacksize+=STACKINCREMENT;//总的栈得空间增大
	}
	*s->top++=e;//将数字e存在栈顶指针
}
//出栈

void pop(sqstack *s,int *e)
{
	if(s->top==s->base)
	{
		printf("stack is empty!\n");
		exit(0);
	}
	*e=*--s->top;
}



main()
{   int n,m,e;
	sqstack s;//创建链表
	initstack(&s);//创建堆栈
    scanf("%d",&n);
	scanf("%d",&m);
	while(n)
	{
      e=n%m;
	  push(&s,e);
	  n=n/m;

	}
	while(s.top!=s.base)
	{
		pop(&s,&e);
		printf("%d",e);
		getchar();
	}
	return 0;
}

经过dev的编译通过了!!!希望能给你提供帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值