栈的实现(链表)

本章通过链表实现栈这一数据结构

  • 链表
    链表之前也写了很多文章介绍了,这里基本信息略过,感兴趣的可以去之前的文章了解一下,我这里就假设你们已经对链表和栈很熟悉了。

image.png

push在数组中只有一种情况,因为数组是连续的内存空间1,而链表则是根据不同地址的节点链接在一起的,所以这时候我们就要考虑两种情况了。头部插入或者是尾部插入,尾部插入需要遍历链表所以他的复杂度是O(n),如果是从头部插入的话复杂度假设O(1),所以我们选择从头部插入。链表的插入我们已经很清楚了,这里就直接看代码如何实现栈。

image.png

#include<stdio.h>
#include<stdlib.h>
struct Node
{
	int data;
	struct Node* link;
};
Node* top = NULL;
void push(int x);
void pop();
int Top();
void Isempty();
int main()
{
push(2);
push(5);
}
void push(int x)
{
	Node*temp = (Node*)malloc(sizeof(Node));
	temp->data = x;
	temp->link = top;
	top = temp;
}
void pop()
{
	Node* temp = top;
	if (top==NULL)
	{
		return;
	}
	top = temp->link;
	free(temp);
}
int Top()
{
	Node* temp = top;
	return temp->data;
}
void Isempty()
{
	if (top == NULL)
	{
		printf("yes");
	}
	else
	{
		printf("no");
	}
}

网站标题:CV鼻祖洋芋

原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c-2/155/

本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!

(0)
上一篇 2024年11月14日 下午5:14
下一篇 2024年11月14日 下午5:19

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注