您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

23王道——链栈

在书上只有顺序栈的实现,我觉得没啥写的,就直接写了链栈
因为没有提及到任何操作,我写的在实现上都没有问题,一会我再去其他博客看一看
找一下自己是否还存在哪些错误

#include<iostream>
using namespace std;

//不带头结点的链栈
typedef struct Linknode {
	int data;
	struct Linknode* next;
}*LiStack;

//初始化链栈
bool InitLiStack(LiStack& S) {
	S = new Linknode;//指向第一个结点
	S->next = NULL;
	S->data = NULL;
	return true;
}

//入栈
bool push(LiStack& S,int x) {
	//链栈不用判断满
	if (S->data==NULL) {//还啥也没有
		S->data = x;
		S->next = NULL;
		return true;
	}
	else {
		Linknode* p = new Linknode;
		p->data = x;
		p->next = S;
		S = p;
		return true;
	}
	return false;
}

//出栈
bool pop(LiStack& S,int &x) {
	if (S->data == NULL)//空栈
		return false;
	else {
		x = S->data;
		S = S->next;
		return true;
	}
	return false;
}

//输出
void printStack(LiStack S) {
	Linknode* p = S;//第一个结点
	while (p != NULL) {
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;
}

//得到栈顶
int gettop(LiStack S) {
	if (S->data == NULL)//啥也没有
		return 0;
	else {
		return S->data;
	}
}

//销毁
void destoryStack(LiStack& S) {
	while (S != NULL) {
		Linknode* p = S;
		S = S->next;
		delete p;
	}
}

int main() {
	LiStack s;
	InitLiStack(s);
	push(s, 10);
	push(s, 11);
	push(s, 12);
	push(s, 13);
	push(s, 14);
	printStack(s);
	int x;
	pop(s,x);
	cout << x << endl;
	printStack(s);
	x=gettop(s);
	cout << x << endl;
	printStack(s);
	destoryStack(s);
	return 0;
}

分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进