数据结构严蔚敏 栈基本操作 C语言实现

本文介绍了在C语言中实现数据结构严蔚敏第三章中的栈基本操作,包括栈的定义、初始化、压栈、弹栈等。特别强调了指针操作的注意事项,如指针值与地址的区别,以及在使用`free`释放内存后需要将指针置为NULL以避免悬挂指针问题。同时提供了对应的`stack.h`、`stack.c`及测试代码段。

【数据结构严蔚敏】 第三章 栈基本操作C语言实现

注意部分:

1.*S.top++ = e;= *S=e ; S.top++ ;
若要实现指针所指地址的元素值++,语句应该是(*a)++而不是*a++
2.关于指针
普通变量如 int a,&a表示变量a所在地址,a表示a所在地址中存储的值
指针变量如 int * a ,a表示a中存储的一个int型变量的地址,*a表示在a存储的地址中存储的值 ,&a依然表示该指针所在地址(不是a中存储的地址),。
2.关于free的问题
free与malloc语句对应,作用于指针,malloc为指针分配专用内存空间,使用free语句后,该内存空间不再为指针专有,它可能会被再次利用,但是指针所指仍然是这个地址,依然能够进行操作,所以在free后需要对指针置为NULL,防止误操作指针出现意外情况。
free(p);p=NULL;配合使用

代码部分

vs2017

stack.h部分

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
#define TRUE	1
#define FALSE	0
#define	OK		1
#define ERROR	0
#define	INFEASLBLE	-1
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10  //存储空间分配增量

typedef int Status;
typedef int SElemType;

typedef struct{
   
   
	SElemType * base;
	SElemType * top;
	int stacksize;
}SqStack;

//构造一个空栈
Status InitStack(SqStack &S);

//销毁一个栈
Status DestroyStack(SqStack &S);

//清空一个栈
Status ClearStack(SqStack &S);

//若栈为空栈,则返回TRUE,否则返回FALSE
Status StackEmpty(SqStack &S);

//返回S的元素个数,即栈的长度
int StackLength(SqStack S);

//若栈不空,用e返回S的栈顶元素,并返回OK;否则返回ERROR
Status GeTop(SqStack S, SElemType &e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值