/*
---------------------------------------------------------
Title: Link Stack(链栈) 链栈-链式存储结构的栈
请先阅读教材67页, 2.3.2,2.3.4节, 栈的定义及基本运算
(注意以下程序为简化后的,仅供入门学习之用)
---------------------------------------------------------- */
#include < stdio.h >
#include < stdlib.h >
// 定义栈的结点结构
struct stacknode
{
int data; // 存放数据元素
struct stacknode * next; // 指针,指向下一个结点
};
// 初始化栈
struct stacknode * InitialStack()
{
struct stacknode * head;
head = ( struct stacknode * )malloc( sizeof ( struct stacknode ));
head -> next = NULL; //
return head;
}
// 入栈
void PushIntoStack( struct stacknode * head, int value)
{
struct stacknode * p;
p = ( struct stacknode * )malloc( sizeof ( struct stacknode ));
p -> data = value;
p -> next = head -> next;
head -> next = p;
}
// 出栈
void PopFromStack( struct stacknode * head)
{
struct stacknode * p;
if (head -> next == NULL)
printf( " Pop Failed \n " );
else
{
p = head -> next;
head -> next = p -> next;
free(p);
}
}
// 显示栈中所有元素
void ShowStack( struct stacknode * head)
{
struct stacknode * p;
p = head -> next;
printf( " \nShow all elements in stack:\n " );
while (p != NULL)
{
printf( " %d " ,p -> data);
p = p -> next;
}
}
void main()
{
struct stacknode * head1;
head1 = InitialStack();
ShowStack(head1);
PushIntoStack(head1, 11 );
ShowStack(head1);
PushIntoStack(head1, 22 );
ShowStack(head1);
PopFromStack(head1);
ShowStack(head1);
}
Title: Link Stack(链栈) 链栈-链式存储结构的栈
请先阅读教材67页, 2.3.2,2.3.4节, 栈的定义及基本运算
(注意以下程序为简化后的,仅供入门学习之用)
---------------------------------------------------------- */
#include < stdio.h >
#include < stdlib.h >
// 定义栈的结点结构
struct stacknode
{
int data; // 存放数据元素
struct stacknode * next; // 指针,指向下一个结点
};
// 初始化栈
struct stacknode * InitialStack()
{
struct stacknode * head;
head = ( struct stacknode * )malloc( sizeof ( struct stacknode ));
head -> next = NULL; //
return head;
}
// 入栈
void PushIntoStack( struct stacknode * head, int value)
{
struct stacknode * p;
p = ( struct stacknode * )malloc( sizeof ( struct stacknode ));
p -> data = value;
p -> next = head -> next;
head -> next = p;
}
// 出栈
void PopFromStack( struct stacknode * head)
{
struct stacknode * p;
if (head -> next == NULL)
printf( " Pop Failed \n " );
else
{
p = head -> next;
head -> next = p -> next;
free(p);
}
}
// 显示栈中所有元素
void ShowStack( struct stacknode * head)
{
struct stacknode * p;
p = head -> next;
printf( " \nShow all elements in stack:\n " );
while (p != NULL)
{
printf( " %d " ,p -> data);
p = p -> next;
}
}
void main()
{
struct stacknode * head1;
head1 = InitialStack();
ShowStack(head1);
PushIntoStack(head1, 11 );
ShowStack(head1);
PushIntoStack(head1, 22 );
ShowStack(head1);
PopFromStack(head1);
ShowStack(head1);
}