首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性表------链栈

线性表------链栈

作者头像
刘开心_1266679
发布2019-02-14 15:26:58
3350
发布2019-02-14 15:26:58
举报

链栈的存储结构其实就是单链表,插入和删除在链表头进行(书上这么写,个人认为只要是在链表一端操作即可)。

链栈的数据结构类型为:

#include <cstdio>
#include <cstdlib>
typedef int DataType;

struct LinkStack
{
	DataType data;
	struct LinkStack *next;
};

基本操作实现:

//初始化头节点, 数据域存储链栈大小,指针域置空 

void InitStack(LinkStack &s)
{
	s.data = 0; 
	s.next = NULL;
}

bool isEmpty(LinkStack &s)
{
	return s.data == 0 ? true : false;
} 

void Push(LinkStack &s, DataType e)
{
	LinkStack *p;
	p = (LinkStack*)malloc(sizeof(LinkStack));
	p->data = e;
	p->next = s.next;
	s.next = p;
	s.data++;
}

DataType Pop(LinkStack &s)
{
	if(isEmpty(s))
	{
		printf("Empty!\n");
		return NULL;
	}
	LinkStack *p;
	DataType top;
	p = s.next;
	s.next = p->next;
	s.data--;
	top = p->data;
	free(p);
	return top;
}

测试代码:

int main()
{
	LinkStack s;
	InitStack(s);
	for(int i = 0; i < 10; i++)
		Push(s, i);
	int t;
	while(!isEmpty(s))
	{
		t = Pop(s);
		printf("%d ", t);
	}
	printf("\n");
	t = Pop(s);
	Push(s, 100);
	t = Pop(s);
	printf("%d\n", t);
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年04月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档