#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);
return 1;
}
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+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojZGVmaW5lIE4gMjAKCnN0cnVjdCBjb21wbGV4IHsKICAgIGludCByZTsKICAgIGludCBpbTsKfTsKCnN0cnVjdCBzdG9zIHsKICAgIGludCBzcDsKICAgIHN0cnVjdCBjb21wbGV4IHRhYltOXTsKfTsKCnZvaWQgaW5pdChzdHJ1Y3Qgc3RvcyopOwppbnQgaXNFbXB0eShzdHJ1Y3Qgc3RvcyopOwppbnQgaXNGdWxsKHN0cnVjdCBzdG9zKik7CnN0cnVjdCBjb21wbGV4KiBwb3Aoc3RydWN0IHN0b3MqIGspOwp2b2lkIHB1c2goc3RydWN0IGNvbXBsZXggeCwgc3RydWN0IHN0b3MqIGspOwoKCmludCBtYWluKCkKewogICAgc3RydWN0IHN0b3MgbDsKICAgIHN0cnVjdCBjb21wbGV4IGJiOwogICAgaW50IGk7CiAgICBpbml0ICgmbCk7CiAgICBiYi5yZT0yOwogICAgYmIuaW09MTsKICAgIHB1c2goYmIsJmwpOwogICAgZm9yIChpPTA7aTxOO2krKykKICAgIHsKICAgICAgICBwcmludGYoIiVpICtqJWlcbiIsbC50YWJbaV0ucmUsbC50YWJbaV0uaW0pOwogICAgfQogICAgcG9wKCZsKTsKICAgIHJldHVybiAxOwp9CnZvaWQgaW5pdChzdHJ1Y3Qgc3RvcyogaykKewogICAgay0+c3A9MDsKICAgIG1lbXNldChrLT50YWIsMCxOKnNpemVvZihzdHJ1Y3QgY29tcGxleCkpOwp9CgppbnQgaXNFbXB0eShzdHJ1Y3Qgc3RvcyogaykKewogICAgaWYgKGstPnNwPT0wKSByZXR1cm4gMTsKICAgIGVsc2UgcmV0dXJuIDA7Cn0KCmludCBpc0Z1bGwoc3RydWN0IHN0b3MqIGspCnsKICAgIGlmIChrLT5zcD49TikgcmV0dXJuIDE7CiAgICBlbHNlIHJldHVybiAwOwp9Cgp2b2lkIHB1c2goc3RydWN0IGNvbXBsZXggeCwgc3RydWN0IHN0b3MqIGspCnsKICAgIGlmIChpc0Z1bGwoaykpIHByaW50ZiAoIlN0b3MgamVzdCBwZWxueVxuIik7CiAgICBlbHNlIHsKICAgLy8gay0+dGFiW2stPnNwXS5pbSA9IHguaW07CiAgIC8vIGstPnRhYltrLT5zcF0ucmUgPSB4LnJlOwogICBrLT50YWJbay0+c3BdPXg7CiAgICBrLT5zcCsrOwogICAgfQp9CgpzdHJ1Y3QgY29tcGxleCogcG9wKHN0cnVjdCBzdG9zKiBrKQp7CiAgICBzdHJ1Y3QgY29tcGxleCogeCA9IChzdHJ1Y3QgY29tcGxleCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgY29tcGxleCkpOwogICAgaWYgKGlzRW1wdHkoaykpIHsKICAgIHByaW50ZiAoIlN0b3MgamVzdCBwdXN0eVxuIik7CiAgICByZXR1cm4gTlVMTDt9CiAgICBlbHNlewogICAgeC0+aW0gPSBrLT50YWJbay0+c3BdLmltOwogICAgeC0+cmUgPSBrLT50YWJbay0+c3BdLnJlOwogICAgay0+c3AtLTsKICAgIH0KICAgIHByaW50ZiAoIiVpLCAlaSIsIHgtPnJlLHgtPmltKTsKICAgIHJldHVybiB4Owp9