2008秋-链栈-链式存储结构的栈

/*---------------------------------------------------------
 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);
}




posted @ 2007-09-12 13:15  emanlee  阅读(831)  评论(0编辑  收藏  举报