程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 數據結構相關復習---鏈棧,順序棧,括號匹配算法

數據結構相關復習---鏈棧,順序棧,括號匹配算法

編輯:C++入門知識

順序棧 [cpp]   #include<stdio.h>   //初始化棧[順序棧]   void initStack(SeqStack * s)   {       s->top=-1;   }   //進棧   int push(SeqStack *s,StackElementType x)   {       if(s->top == Stack_size-1)       {           return false;       }       s->top++;       s->elem[s->top]=x;       return true;   }   //出棧   int Pop(SeqStack *s,StackElementType *x)   {       if(s->top==-1)       {           return false;       }else       {           *x=s->elem[s->top];           s->top--;           return true;       }   }   //取棧頂元素   int GetTop(SeqStack *s,StackElementType *x)   {       if(s->top==-1)       {           return false;       }else       {           *x=s->elem[s->s->top];           return true;       }   }   int main(void)   {       return 0;   }   鏈棧 [cpp]   #include<stdio.h>   typedef struct node   {       StackElementType data;       struct node *next;   }LinkStackNode;   typedef LinkStackNode * LinkStack;      //進棧【鏈棧】   int push(SeqStack top,StackElementType x)   {       LinkStackNode * temp;       temp = (LinkStackNode)malloc(sizeof(LinkStackNode));       if(temp==NULL)//申請空間失敗           return false;       temp->data=x;              temp->next=top->next;       top->next=temp;              return true;   }   //出棧【鏈棧】   int Pop(SeqStack top,StackElementType *x)   {       LinkStackNode * temp;       temp=top->next;       if(temp==NULL)//棧為空           return false;              top->next=temp->next;              *x=temp->data;       free(temp);       return true;   }   int main(void)   {       return 0;   }   括號匹配算法 [cpp]   #include<stdio.h>   //括號匹配算法   void BracketMatch(char *str)//參數為輸入的字符串   {       Stack s,int i,char ch;       InitStack(&s);       for(i=0;str[i]!='\0';i++)       {           switch(str[i])           {               case '(':               case '[':               case '{':                   Push(&s,str[i]);                   break;               case ')':               case ']':               case '}':                   if(IsEmpty(&s))                   {                       printf("右括號多余");                       return;                   }else                   {                       GetTop(&s,&ch);                       if(Match(ch,str[i]))                           Pop(&s,&ch);                       else                           printf("對應的括號不同類");                    }  www.2cto.com         }       }       if(IsEmpty(&s))           printf("括號匹配");       else           printf("括號不匹配");   }   int main(void)   {       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved