使用链式结构实现堆栈

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;

 }

栈的用途

可以找出最近一次的数据。

猜你喜欢

转载自www.linuxidc.com/Linux/2016-08/134248.htm
今日推荐