数据结构-栈练习-2020/10/31

/*
2020/10/31
 现在我要写一个动态栈
 首先要写数据结构
 数据结构包括:
 链栈节点
 指针节点 
 然后再写实现它的函数 
*/ 
#include<stdio.h>
#include<stdlib.h> 

#define TRUE  1
#define FALSE 0
#define ERROR 0
#define OK    1

typedef int Status;
typedef int SElemType;

typedef struct StackNode
{
	SElemType data;
	StackNode *next; 
	
}NODE,*PNODE;

typedef struct 
{
    PNODE pTOP;
	PNODE pBottom;	
}Stack,*LinkStack;

Status initStack(LinkStack S);
Status push(LinkStack S,SElemType num);
Status pop(LinkStack S,SElemType *val);
Status treverse(LinkStack S);

int main()
{
	SElemType val; 
	Stack S;
	initStack(&S); //建站
	push(&S,2);//压栈
	push(&S,3);//压栈
	push(&S,4);//压栈
	pop(&S,&val);//出栈
    treverse(&S);//遍历
    //Bravo!
	
}

Status initStack( LinkStack S)
{
	S->pBottom = (PNODE)malloc(sizeof(NODE));
	if(NULL == S->pBottom)
	{
		printf("申请空间失败!");
		return ERROR; 
	 } 
	S->pBottom->next = NULL;
	S->pBottom->data = 0;
	S->pTOP = S->pBottom;
	return OK; 
} 


Status push(LinkStack S,SElemType num)
{
	PNODE r = (PNODE)malloc(sizeof(NODE));
	r->data = num;
	r->next = S->pTOP;
	S->pTOP = r;
	r = NULL;
	return OK; 
}


Status push(LinkStack S,SElemType num)
{
	PNODE r = (PNODE)malloc(sizeof(NODE));
	r->data = num;
	r->next = S->pTOP;
	S->pTOP = r;
	r = NULL;
	return OK; 
}


Status pop(LinkStack S,SElemType *val)
{
	PNODE p;
	if(NULL == S->pTOP->next)
	{
		return ERROR; 
	}
	*val = S->pTOP->data;
	p = S->pTOP;
	S->pTOP = S->pTOP->next;
	free(p);
	return OK;
}

Status treverse(LinkStack S)
{
	PNODE p;
	p = S->pTOP;
	while(p->next)
	{
	    printf("%d\n",p->data);
	    p=p->next;
	} 
	return OK;
} 

笔记:
在这里插入图片描述以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值