(전환) 스 택 의 기본 작업 (배열, 링크)

2664 단어 데이터 구조
더 읽 기
//(1)  
#include 
 #include 
 /*      */
 struct Stack
 {
   int Array[10];//    
   int Top;//             
 };
 /*        */
 bool stack_empty(Stack *Stack1)
 {
   if(Stack1->Top==0)
   {
     return true;            
   }     
   else
   {
     return false;    
   }
 }
 /*    */
 void push(Stack *Stack1,int x)
 {
   Stack1->Top=Stack1->Top+1;
   Stack1->Array[Stack1->Top]=x;         
 }
 /*    */
 int pop(Stack *Stack1)
 {
   if(stack_empty(Stack1))
   {
     printf("underflow");
   }
   else
   {
     Stack1->Top=Stack1->Top-1;
     return Stack1->Array[Stack1->Top+1];    
   }
 
 }
 int main()
 {
   struct Stack *Stack1=(struct Stack *)malloc(sizeof(struct Stack));//        
   Stack1->Top=0;//   
   push(Stack1,3);//  3
   push(Stack1,4);//  4
   push(Stack1,1);//  1
   push(Stack1,10);//  10
   printf("%d ",pop(Stack1));//  10
   printf("%d ",pop(Stack1));//  1
   printf("%d ",pop(Stack1));//  4
   system("pause");    
 }
//(2)  
/*       */
 typedef struct { 
   SLink top;    //      
   int length;   //       
 }Stack;
 
 void InitStack ( Stack &S )
 { 
   //        S
   S.top = NULL;   //          " " 
   S.length = 0;   //         0
 } // InitStack
 /*              ,      ?  
    ,       ,       ,        ,           。*/ 
 
 
 void Push ( Stack &S, ElemType e )
 {
   //           e        
   p = new LNode;   //      
   if(!p) exit(1);  //       
   p -> data = e;
   p -> next = S.top; //         
   S.top = p;     //       
   ++S.length;     //      1
 } // Push
 /*           "      "              。*/
 
 bool Pop ( Stack &S, SElemType &e )
 { 
   //     ,   S     ,  e     ,
   //     TRUE;     FALSE
   if ( !S.top )
     return FALSE; 
   else 
     {
       e = S.top -> data;   //        
       q = S.top; 
       S.top = S.top -> next; //        
       --S.length;       //      1 
       delete q;       //           
       return TRUE;
     }
 } // Pop

 
      
 
 

좋은 웹페이지 즐겨찾기