链栈的基本操作 C语言版

#include
#include 
typedef int ElemType;

typedef struct Linknode {
	ElemType data; //数据域
	struct Linknode *next; //指针域
} LiStack; //栈类型定义


//初始化链栈
LiStack* LiStack_HeadInsert() {
	LiStack *L = (LiStack*) malloc(sizeof(LiStack)); //创建头结点
	L->next = NULL; //将头结点指针置为NULL
	return L;

}

//进栈操作
void LiStack_Push(LiStack *L, ElemType e) {
	LiStack *s;
	s = (LiStack*) malloc(sizeof(LiStack));
	s->data = e;
	s->next = L->next;
	L->next = s;
}

//出栈操作
void LiStack_Pop(LiStack *L) {

	L->next = L->next->next;

}

//取出栈顶元素
int GetTop(LiStack *L) {
	int x = L->next->data;
	return x;
}

int main() {

	LiStack *L = LiStack_HeadInsert();
//进栈
	LiStack_Push(L, 100);
	//进栈
	LiStack_Push(L, 101);
//读出栈顶元素
	ElemType i = GetTop(L);
	printf("栈顶元素为:%d\n", i);
//出栈
	LiStack_Pop(L);
//读出栈顶元素
	ElemType j = GetTop(L);
	printf("栈顶元素为:%d", j);

}


你可能感兴趣的:(数据结构,指针,c语言,数据结构)