#include <stdio.h>
#include <stdlib.h>
enum {
MINVAL = 0,
MAXVAL = 500,
NELEMS = MAXVAL - MINVAL + 1,
NUMBERS = 5,
ZERO_BASED = 1
};
struct node {
int val;
struct node *next;
};
struct node *new(int v, struct node *np)
{
static struct node mem[NUMBERS];
static int n;
mem[n].val = v;
mem[n].next = np;
return mem + n++;
}
int main(void)
{
static struct node *a[NELEMS];
struct node *np;
int i, r;
for (i = 0; i < NUMBERS; i++) {
printf(" %d", (r
= rand() / (RAND_MAX
/ NELEMS
)) + 1); a[r] = new(i, a[r]);
}
for (i = 0; i < NELEMS; i++)
for (np = a[i]; np; np = np->next)
printf(" %d", np
->val
+ !ZERO_BASED
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmVudW0gewoJTUlOVkFMID0gMCwKCU1BWFZBTCA9IDUwMCwKCU5FTEVNUyA9IE1BWFZBTCAtIE1JTlZBTCArIDEsCglOVU1CRVJTID0gNSwKCVpFUk9fQkFTRUQgPSAxCn07CgpzdHJ1Y3Qgbm9kZSB7CglpbnQgdmFsOwoJc3RydWN0IG5vZGUgKm5leHQ7Cn07CgpzdHJ1Y3Qgbm9kZSAqbmV3KGludCB2LCBzdHJ1Y3Qgbm9kZSAqbnApCnsKCXN0YXRpYyBzdHJ1Y3Qgbm9kZSBtZW1bTlVNQkVSU107CglzdGF0aWMgaW50IG47CgoJbWVtW25dLnZhbCA9IHY7CgltZW1bbl0ubmV4dCA9IG5wOwoJcmV0dXJuIG1lbSArIG4rKzsKfQoKaW50IG1haW4odm9pZCkKewoJc3RhdGljIHN0cnVjdCBub2RlICphW05FTEVNU107CglzdHJ1Y3Qgbm9kZSAqbnA7CglpbnQgaSwgcjsKCglmb3IgKGkgPSAwOyBpIDwgTlVNQkVSUzsgaSsrKSB7CgkJcHJpbnRmKCIgJWQiLCAociA9IHJhbmQoKSAvIChSQU5EX01BWCAvIE5FTEVNUykpICsgMSk7CgkJYVtyXSA9IG5ldyhpLCBhW3JdKTsKCX0KCXB1dHMoIiIpOwoJZm9yIChpID0gMDsgaSA8IE5FTEVNUzsgaSsrKQoJCWZvciAobnAgPSBhW2ldOyBucDsgbnAgPSBucC0+bmV4dCkKCQkJcHJpbnRmKCIgJWQiLCBucC0+dmFsICsgIVpFUk9fQkFTRUQpOwoJcHV0cygiIik7CglyZXR1cm4gMDsKfQ==