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;
}
棧的用途
可以找出最近一次的數據。