数据结构---链栈(C语言)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/gdarg/article/details/102718220

在这里插入图片描述```c
//整个工程中所要用到的头文件
common.h
#ifndef COMMON_H
#define COMMON_H
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#include<stdbool.h>

#define DataType int

#endif


```c
TextMain.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"ListStrack.h"
int main()
{
          //创建一个链表
	      ListStack st;
	      //初始化节点
		  ListStackInit(&st);
		  //数据入栈
		  ListStackPush(&st, 1);
		  ListStackPush(&st, 2);
		  ListStackPush(&st, 3);
		  //出栈
		  ListStackPop(&st);
		  //显示栈中的元素
		  ListStackShow(st);
		 
		  system("pause");
		  return 0;
}
ListStrack.h
#ifndef _LISTSTRACK_H_
#define _LISTSTRACK_H_
#include"common.h"
//链表中的栈
typedef struct StackNode
{
	DataType data;
	struct StackNode *next;
}StackNode;

typedef StackNode* ListStack;

void ListStackInit(ListStack *pst);
void ListStackPush(ListStack *pst, DataType x);
void ListStackShow(ListStack pst);
void ListStackPop(ListStack *pst);
DataType ListStackTop(ListStack *pst);
void ListStackInit(ListStack *pst)
{
	*pst = NULL;
}
void ListStackPush(ListStack *pst, DataType x)
{
	StackNode *node = (StackNode*)malloc(sizeof(StackNode));
	assert(node != NULL);
	node->data = x;
	node->next = *pst;
	*pst = node;
}
void ListStackShow(ListStack pst)
{
	StackNode *p = pst;
	while (p != NULL)
	{
		printf("%d\n", p->data);
		p = p->next;
	}
}
void ListStackPop(ListStack *pst)
{
	StackNode *p = *pst;
	*pst = p->next;
	free(p);
}
DataType ListStackTop(ListStack *pst)
{
	assert(*pst != NULL);
	return (*pst)->data;
}

猜你喜欢

转载自blog.csdn.net/gdarg/article/details/102718220