c語言中棧的應用

c中棧的建立spa

棧(stack)又名堆棧,它是一種運算受限的線性表。code

其限制是僅容許在表的一端進行插入和刪除運算。這一端被稱爲棧頂,相對地,把另外一端稱爲棧底。向一個棧插入新元素又稱做進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成爲新的棧頂元素;從一個棧刪除元素又稱做出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成爲新的棧頂元素。orm

c語言源碼的實現了棧的一些基本操做,包括了建立空棧。遊戲

#include <stdio.h>
#include <stdlib.h>

#define Max 100

typedef char T;
 

 
typedef struct MyStack
{
    T aa[Max];
    unsigned int p;
               
} stack;
 
//建立空棧
stack* createEmptyStack()
{
      stack* st = (stack *)malloc(sizeof(stack));
      int i=0;
      for(i=0;i<Max;i++)
         st->aa[i]=0;
      st->p=0;
      return st;    
};
 
//棧判空
int isEmpty(const stack* st)
{
      if(st->p==0) return 1;
      else     return 0;
};
  
//求棧的大小
unsigned int size(const stack* st)
{
      return st->p;
};
 
//push操做
void push(stack* st,const T a)
{
      st->p=st->p+1;
      if(st->p==Max)
      {
          printf("棧滿\n");
          st->p--;
          return;
      }
      st->aa[st->p]=a;    
};
 
//pop操做
T pop(stack* st)
{
      if(isEmpty(st))
      {
          printf("棧空");
          return NULL;
      }
      char t=st->aa[st->p];
      st->p=st->p-1; 
      printf("%c ",t);
      return t;     
};
 
//棧銷燬
void destroy(stack* st)
{
    free(st);
};
 
int main()
{
     
    
    stack* st = createEmptyStack();
    if(isEmpty(st)) printf("MyStack is empty\n");
    else printf("MyStack is not empty\n");
    push(st,'a');
    push(st,'b');
    push(st,'c');
    push(st,'d');
    push(st,'e'); 
    printf("%d\n",size(st));
    while(!isEmpty(st)) pop(st);
    destroy(st);
    system("pause");
    return 0;
}


棧的應用:源碼

1.數置轉換,10轉2,轉8;it


2.括號匹配io


3.迴文遊戲im

建立字符nimargin

相關文章
相關標籤/搜索