数据结构-栈1-顺序存储

LinkList.h:


#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 1024
#define TRUE 1
#define FALSE 0

typedef struct LINKLIST {
	void* data[MAX_SIZE];
	int size;
 }LinkList;

//初始化
LinkList* Init_linkList();

//压入元素
void Push_LinkList(LinkList* stack, void* data);

//取出栈顶元素
void* Top_LinkList(LinkList* stack);

//弹出栈顶元素
void Pop_LinkList(LinkList* stack);

//判断是否为空
int IsEmpty_LinkList(LinkList* stack);

//返回栈元素个数
int Size_LinkList(LinkList* stack);


//清空栈元素
void Clear_LinkList(LinkList* stack);
//销毁栈元素
void FreeSpace_LinkList(LinkList* stack);

LinkList.c

#include"LinkList.h"

//初始化
LinkList* Init_linkList()
{
	LinkList* stack = (LinkList*)malloc(sizeof(LinkList));
	stack->size = 0;   //问题1:数组的长度是否可以自己获取???
	for (int i = 0; i < MAX_SIZE; i++)
	{
		stack->data[i] = NULL;
	}
	return stack;
}

//压入元素
void Push_LinkList(LinkList* stack, void* data)
{
	if (stack == NULL)
	{
		return;
	}
	if (data == NULL)
	{
		return;
	}
	stack->data[stack->size] = data;
	stack->size++;
}

//取出栈顶元素
void* Top_LinkList(LinkList* stack)
{
	if (stack == NULL)
	{
		return NULL;
	}
	return stack->data[stack->size - 1];
}

//弹出栈顶元素
void Pop_LinkList(LinkList* stack)
{
	if (stack == NULL)
	{
		return ;
	}
	stack->data[stack->size - 1] = NULL;
	stack->size--;
}

//判断是否为空
int IsEmpty_LinkList(LinkList* stack)
{
	if (stack == NULL)
	{
		return -1;
	}
	if (stack->size == 0)
	{
		return TRUE;
	}
	else
		return FALSE;
}

//返回栈元素个数
int Size_LinkList(LinkList* stack)
{
	if (stack == NULL)
	{
		return -1;
	}
	return stack->size;
}


//清空栈元素
void Clear_LinkList(LinkList* stack) {
	if (stack == NULL)
	{
		return;
	}
	for (int i = 0; i < MAX_SIZE; i++)
	{
		stack->data[i] = NULL;
	}
	stack->size = 0;
}
//清空栈元素
void FreeSpace_LinkList(LinkList* stack)
{
	if (stack == NULL)
	{
		return;
	}
	free(stack);
}

栈的顺序存储.c:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include"LinkList.c"

typedef struct PERSON {
	char name[64];
	int age;
}Person;
int main()
{
	Person p1 = { "aaa",12 };
	Person p2 = { "bbb",13 };
	Person p3 = { "ccc",14 };
	Person p4 = { "ddd",15 };
	Person p5 = { "eee",19 };
	LinkList* stack = Init_linkList();

	Push_LinkList(stack, &p1);
	Push_LinkList(stack, &p2);
	Push_LinkList(stack, &p3);
	Push_LinkList(stack, &p4);
	Push_LinkList(stack, &p5);

	while (Size_LinkList(stack) > 0)
	{
		Person* p=(Person*)Top_LinkList(stack);
		printf("Name:%s Age:%d\n", p->name, p->age);
		Pop_LinkList(stack);
	}
	FreeSpace_LinkList(stack);
	return 0;
}

 运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_38383877/article/details/89917463