使用链式结构实现堆栈

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;

}

栈的用途

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c9465ed9e91045352a704e10b093f51d.html