#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 20
struct complex {
int re;
int im;
};
struct stos {
int sp;
struct complex tab[N];
};
void init(struct stos*);
int isEmpty(struct stos*);
int isFull(struct stos*);
struct complex* pop(struct stos* k);
void push(struct complex x, struct stos* k);
int main()
{
struct stos l;
struct complex bb;
int i;
init (&l);
bb.re=2;
bb.im=1;
push(bb,&l);
for (i=0;i<N;i++)
{
printf("%i +j%i\n",l.
tab[i
].
re,l.
tab[i
].
im); }
pop(&l);
bb.re = 3;
push(bb, &l);
for (i=0;i<N;i++)
{
printf("%i +j%i\n",l.
tab[i
].
re,l.
tab[i
].
im); }
return 0;
}
void init(struct stos* k)
{
k->sp=0;
memset(k
->tab
,0,N
*sizeof(struct complex
)); }
int isEmpty(struct stos* k)
{
if (k->sp==0) return 1;
else return 0;
}
int isFull(struct stos* k)
{
if (k->sp>=N) return 1;
else return 0;
}
void push(struct complex x, struct stos* k)
{
if (isFull
(k
)) printf ("Stos jest pelny\n"); else {
// k->tab[k->sp].im = x.im;
// k->tab[k->sp].re = x.re;
k->tab[k->sp]=x;
k->sp++;
}
}
struct complex* pop(struct stos* k)
{
struct complex
* x
= (struct complex
*)malloc(sizeof(struct complex
)); if (isEmpty(k)) {
return NULL;}
else{
x->im = k->tab[k->sp].im;
x->re = k->tab[k->sp].re;
k->sp--;
}
printf ("%i, %i", x
->re
,x
->im
); return x;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojZGVmaW5lIE4gMjAKCnN0cnVjdCBjb21wbGV4IHsKICAgIGludCByZTsKICAgIGludCBpbTsKfTsKCnN0cnVjdCBzdG9zIHsKICAgIGludCBzcDsKICAgIHN0cnVjdCBjb21wbGV4IHRhYltOXTsKfTsKCnZvaWQgaW5pdChzdHJ1Y3Qgc3RvcyopOwppbnQgaXNFbXB0eShzdHJ1Y3Qgc3RvcyopOwppbnQgaXNGdWxsKHN0cnVjdCBzdG9zKik7CnN0cnVjdCBjb21wbGV4KiBwb3Aoc3RydWN0IHN0b3MqIGspOwp2b2lkIHB1c2goc3RydWN0IGNvbXBsZXggeCwgc3RydWN0IHN0b3MqIGspOwoKCmludCBtYWluKCkKewogICAgc3RydWN0IHN0b3MgbDsKICAgIHN0cnVjdCBjb21wbGV4IGJiOwogICAgaW50IGk7CiAgICBpbml0ICgmbCk7CiAgICBiYi5yZT0yOwogICAgYmIuaW09MTsKICAgIHB1c2goYmIsJmwpOwogICAgZm9yIChpPTA7aTxOO2krKykKICAgIHsKICAgICAgICBwcmludGYoIiVpICtqJWlcbiIsbC50YWJbaV0ucmUsbC50YWJbaV0uaW0pOwogICAgfQogICAgcG9wKCZsKTsKICAgIGJiLnJlID0gMzsKICAgIHB1c2goYmIsICZsKTsKICAgIHByaW50ZigiXG4tLVxuIik7CiAgICBmb3IgKGk9MDtpPE47aSsrKQogICAgewogICAgICAgIHByaW50ZigiJWkgK2olaVxuIixsLnRhYltpXS5yZSxsLnRhYltpXS5pbSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQp2b2lkIGluaXQoc3RydWN0IHN0b3MqIGspCnsKICAgIGstPnNwPTA7CiAgICBtZW1zZXQoay0+dGFiLDAsTipzaXplb2Yoc3RydWN0IGNvbXBsZXgpKTsKfQoKaW50IGlzRW1wdHkoc3RydWN0IHN0b3MqIGspCnsKICAgIGlmIChrLT5zcD09MCkgcmV0dXJuIDE7CiAgICBlbHNlIHJldHVybiAwOwp9CgppbnQgaXNGdWxsKHN0cnVjdCBzdG9zKiBrKQp7CiAgICBpZiAoay0+c3A+PU4pIHJldHVybiAxOwogICAgZWxzZSByZXR1cm4gMDsKfQoKdm9pZCBwdXNoKHN0cnVjdCBjb21wbGV4IHgsIHN0cnVjdCBzdG9zKiBrKQp7CiAgICBpZiAoaXNGdWxsKGspKSBwcmludGYgKCJTdG9zIGplc3QgcGVsbnlcbiIpOwogICAgZWxzZSB7CiAgIC8vIGstPnRhYltrLT5zcF0uaW0gPSB4LmltOwogICAvLyBrLT50YWJbay0+c3BdLnJlID0geC5yZTsKICAgay0+dGFiW2stPnNwXT14OwogICAgay0+c3ArKzsKICAgIH0KfQoKc3RydWN0IGNvbXBsZXgqIHBvcChzdHJ1Y3Qgc3RvcyogaykKewogICAgc3RydWN0IGNvbXBsZXgqIHggPSAoc3RydWN0IGNvbXBsZXgqKW1hbGxvYyhzaXplb2Yoc3RydWN0IGNvbXBsZXgpKTsKICAgIGlmIChpc0VtcHR5KGspKSB7CiAgICBwcmludGYgKCJTdG9zIGplc3QgcHVzdHlcbiIpOwogICAgcmV0dXJuIE5VTEw7fQogICAgZWxzZXsKICAgIHgtPmltID0gay0+dGFiW2stPnNwXS5pbTsKICAgIHgtPnJlID0gay0+dGFiW2stPnNwXS5yZTsKICAgIGstPnNwLS07CiAgICB9CiAgICBwcmludGYgKCIlaSwgJWkiLCB4LT5yZSx4LT5pbSk7CiAgICByZXR1cm4geDsKfQ==