3.1.2栈的顺序实现

 

// DataStructTest.cpp : Defines the entry point for the console application.
//

#include 
"stdafx.h"
#include 
<iostream.h>
#include 
<malloc.h>

int const sqstack_maxsize=6;
struct sqstack
{
 
int data[sqstack_maxsize];
 
int top;
}
;

//初始化
void InitStack(sqstack * sq)
{
 sq
->top=0;
}

//入栈
int Push(sqstack * sq,int value)
{
 
if (sq->top<sqstack_maxsize)
 
{
  sq
->top++;
  sq
->data[sq->top-1]=value;
  
return 1;
 }

 
else
 
{
  
return 0;
 }

}

//出栈
int Pop(sqstack & sq,int & value)
{
 
if (sq.top==0)
 
{
  
return 0;
 }

 value
=sq.data[sq.top-1];
 sq.top
--;
 
return 1;
}

//判断空栈
int EmptyStack(sqstack & sq)
{
 
if (sq.top==0)
  
return 1;
 
else
  
return 0;
}

//得到栈顶元素
int GetTop(sqstack & sq , int & value)
{
 
if (sq.top==0)
  
return 0;
 
else
  value
=sq.data[sq.top-1];
 
return 1;
}

//显示
void Display(sqstack & sq)
{
 
for(int i=1;i<=sq.top;i++)
 
{
  cout
<<"栈中第"<<i<<"个元素为:"<<sq.data[i-1]<<endl;
 }

}


int main(int argc, char* argv[])
{
 sqstack sq;
 InitStack(
&sq);
 
//
 cout<<"分别入栈6,5,4,3,2,1"<<endl;
 Push(
&sq,6);
 Push(
&sq,5);
 Push(
&sq,4);
 Push(
&sq,3);
 Push(
&sq,2);
 Push(
&sq,1);
 Display(sq);
 
//
 int value=0;
 Pop(sq,value);
 cout
<<"退栈操作得到的结果为:"<<value<<endl;
 Display(sq);
 
//
 GetTop(sq,value);
 cout
<<"得到栈顶原素为:"<<value<<endl;
 
return 0;
}

posted @ 2007-06-25 11:33  吴东雷  阅读(244)  评论(0编辑  收藏  举报