数据结构---链栈(C语言)
作者:互联网
```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;
}
标签:include,ListStack,void,C语言,链栈,StackNode,st,数据结构,pst 来源: https://blog.csdn.net/gdarg/article/details/102718220