#include
using namespace std;
int main()
{
int n;
char a[1000005];
cin>>n;
int t=-1, i;
for(i=0;i
{
cin>>a[++t];
if(a[t] == ')' && t > 0 && a[t-1] == '(') t=t-2;
if(a[t] == ']' && t > 0 && a[t-1] == '[') t=t-2;
if(a[t] == '}' && t > 0 && a[t-1] == '{') t=t-2;
}
if(t < 0) cout<<"Yes"; else cout<<"No";
getchar(); getchar();
return 0;}
const MAXSIZE = 100;
struct Stack {
char data[MAXSIZE]; // 100 ta simvolli stek
int size; // elementlar soni
};
Struktura-stek:
Stekni amalga oshirish (massiv)
Element qo’shish:
int Push ( Stack &S, char x )
{
if ( S.size == MAXSIZE ) return 0;
S.data[S.size] = x;
S.size ++;
return 1;
}
Stekni amalga oshirish (massiv)
Boshidan elementni o’chirish:
char Pop ( Stack &S )
{
if ( S.size == 0 ) return char(255);
S.size --;
return S.data[S.size];
}
Bo’shmi yoki yo’q?
int isEmpty ( Stack &S )
{
if ( S.size == 0 )
return 1;
else return 0;
}
void main()
{
char br1[3] = { '(', '[', '{' };
char br2[3] = { ')', ']', '}' };
char s[80], upper;
int i, k, error = 0;
Stack S;
S.size = 0;
printf(“Qavsli ifodani kiriting > ");
gets ( s );
... // qayta ishlovchi asosiy sikl
if ( ! error && (S.size == 0) )
printf("\nIfoda to’g’ri\n");
else printf("\nnIfoda noto’g’ri\n");
}
Dastur
Men bu mustaqil ishda yarimstatik malumotlar tuzilmasi hamfa stek xossalari haqida organdim. Yana stekni massiv shaklida hosil qilishni korib chiqdim. Stekning oziga hos xususiyati yani unga elementlar har ikki tomondan chapdan ham ongdan ham kiritilishi chiqarilishi mumkunligini bilib oldim. Yarimstatik malumotlar ozgaruvchan uzunlikka ega va uni ozgartiruvchi oddiy funksiyalariga ega deb tavsiflanishini bilib oldim
Xulosa
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
E’TIBORINGIZ UCHUN RAXMAT!
Do'stlaringiz bilan baham: |