加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

使用链式结构达成堆栈

发布时间:2021-11-18 17:19:57 所属栏目:教程 来源:互联网
导读:1 链式结构的结构体,节点的数据类型。概念:头指针指向头节点,和尾节点。 typedef struct node { int data; struct node* next;记录下一个地址的节点,这里不能省略struct }node; #include #include typedef struct node { int data; struct node* naxt;记
1 链式结构的结构体,节点的数据类型。概念:头指针指向头节点,和尾节点。
 
typedef struct node
 
{
 
int data;
 
struct node* next;记录下一个地址的节点,这里不能省略struct
 
}node;
 
#include
 
#include
 
typedef struct node
 
{
 
  int data;
 
  struct node* naxt;记录下一个节点的地址
 
}node;
 
//定义栈的数据类型
 
typedef struct
 
{
 
  node * head;//头指针
 
 
 
}staclk;
 
//创建一个类型;
 
//判断栈是否为空,
 
int empty(stack *ps)
 
{
 
return NULL==ps->head;
 
}
 
// 判断栈是否为满
 
int full(stack *ps)
 
{
 
 return 0;
 
}
 
// 实现入栈
 
push(stack *ps,int data)
 
{
 
  //创建新节点
 
  node *pn =(node *)malloc(sizeof(node));
 
  pn ->data =data;
 
  pn->next=NULL;
 
  //插入新节点到头结点的位置。
 
  pn->next=head;
 
  head =pn;
 
}
 
//实现遍历
 
void travel(stack *ps)
 
{
 
  node *p =ps->head;
 
  while(p)
 
{
 
        printf("栈中的元素有");
 
  p=p->next;
 
          }
 
printf("n");
 
}
 
//实现出栈
 
int pop(stack *ps)
 
{
 
  node *p=ps->head;//准备一个指针记录要删除的节点地址
 
  ps->head=ps->head->head;//头指针指向下一个节点
 
int temp=p->data;单独存储要删除的节点元素;
 
free(p);释放要删除的节点
 
p=NULL;
 
返回取出的节点元素
 
return temp;
 
}
 
//清空栈里面所有的元素
 
void clear(stack *ps)
 
{
 
while(ps->head)
 
  {node*p=ps->head;//使用临时指针记录第一个节点
 
  ps->head =ps->head->next;头指针指向下一个节点
 
  free(p);
 
  p=NULL
 
}
 
}
 
int main()
 
{
 
  // 定义栈并且初始化
 
  stack stack;
 
  stack.head=NULL;
 
  return 0;
 
 }
 
栈的用途
 
可以找出最近一次的数据。

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读