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;
}
栈的用途
可以找出最近一次的数据。