栈的实现(链表)

2023-10-11 21:07:56 浏览数 (1)

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

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

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

代码语言:javascript复制
#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");
  }
}

0 人点赞