#include <stdio.h>
#include <stdlib.h>
int stringLength(char *s) {
int i=0;
while ( (i < 1000) && (s[i]!='\0') ) i++;
if (s
[i
]!='\0') {printf("ERROR: Missing string end character.\n\n"); exit(1);} return (i);
}
char* stringCopy(char *s) {
int i=0;
char *t
= malloc(stringLength
(s
)+2+1); do {t[i]=s[i];} while (s[i++]!='\0');
return(t);
}
typedef struct pnode {
struct pnode *back;
struct pnode *next;
char piece;
int dir;
int cost;
char *board;
} position;
position * createPosition(position *back, position *next, char piece, int dir, int cost, char board[12]){
position
*p
= malloc(sizeof(position
)); p->back = back;
p->next = next;
p->piece = piece;
p->dir = dir;
p->cost = cost;
p->board = stringCopy(board);
return p;
}
typedef struct queue {
int size;
int front;
int rear;
int n;
position *array[];
} Queue;
Queue * createQueue(int n){
Queue
*q
= malloc(sizeof(Queue
)); q->size = 0;
q->front = 0;
q->rear = 0;
q->n = n;
return q;
}
void enqueue(Queue *q, position *p){
if (q->size >= q->n){
} else {
q->array[q->rear] = p;
q->rear = q->rear + 1;
if (q->rear == q->n){
q->rear = 0;
}
q->size = q->size + 1;
}
}
position *dequeue(Queue *q){
if (q->size == 0){
} else {
position *temp = q->array[q->front];
q->front = q->front + 1;
if (q->front == q->n){
q->front = 0;
}
q->size = q->size - 1;
return temp;
}
}
int main(void){
position *p = createPosition(NULL, NULL, 'x', 1, 4, "xyz123456002");
Queue *q = createQueue(10);
enqueue(q, p);
position *r = dequeue(q);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBzdHJpbmdMZW5ndGgoY2hhciAqcykgewoJaW50IGk9MDsKCXdoaWxlICggKGkgPCAxMDAwKSAmJiAoc1tpXSE9J1wwJykgKSBpKys7CglpZiAoc1tpXSE9J1wwJykge3ByaW50ZigiRVJST1I6IE1pc3Npbmcgc3RyaW5nIGVuZCBjaGFyYWN0ZXIuXG5cbiIpOyBleGl0KDEpO30KCXJldHVybiAoaSk7Cn0KCmNoYXIqIHN0cmluZ0NvcHkoY2hhciAqcykgewoJaW50IGk9MDsKCWNoYXIgKnQgPSBtYWxsb2Moc3RyaW5nTGVuZ3RoKHMpKzIrMSk7CglkbyB7dFtpXT1zW2ldO30gd2hpbGUgKHNbaSsrXSE9J1wwJyk7CglyZXR1cm4odCk7Cn0KCnR5cGVkZWYgc3RydWN0IHBub2RlIHsKCXN0cnVjdCBwbm9kZSAqYmFjazsKCXN0cnVjdCBwbm9kZSAqbmV4dDsKCWNoYXIgcGllY2U7CglpbnQgZGlyOwoJaW50IGNvc3Q7CgljaGFyICpib2FyZDsKfSBwb3NpdGlvbjsKCnBvc2l0aW9uICogY3JlYXRlUG9zaXRpb24ocG9zaXRpb24gKmJhY2ssIHBvc2l0aW9uICpuZXh0LCBjaGFyIHBpZWNlLCBpbnQgZGlyLCBpbnQgY29zdCwgY2hhciBib2FyZFsxMl0pewoJcG9zaXRpb24gKnAgPSBtYWxsb2Moc2l6ZW9mKHBvc2l0aW9uKSk7CglwLT5iYWNrID0gYmFjazsKCXAtPm5leHQgPSBuZXh0OwoJcC0+cGllY2UgPSBwaWVjZTsKCXAtPmRpciA9IGRpcjsKCXAtPmNvc3QgPSBjb3N0OwoJcC0+Ym9hcmQgPSBzdHJpbmdDb3B5KGJvYXJkKTsKCXJldHVybiBwOwp9Cgp0eXBlZGVmIHN0cnVjdCBxdWV1ZSB7CglpbnQgc2l6ZTsKCWludCBmcm9udDsKCWludCByZWFyOwoJaW50IG47Cglwb3NpdGlvbiAqYXJyYXlbXTsKfSBRdWV1ZTsKClF1ZXVlICogY3JlYXRlUXVldWUoaW50IG4pewoJUXVldWUgKnEgPSBtYWxsb2Moc2l6ZW9mKFF1ZXVlKSk7CglxLT5zaXplID0gMDsKCXEtPmZyb250ID0gMDsKCXEtPnJlYXIgPSAwOwoJcS0+biA9IG47CglyZXR1cm4gcTsKfQoKdm9pZCBlbnF1ZXVlKFF1ZXVlICpxLCBwb3NpdGlvbiAqcCl7CglpZiAocS0+c2l6ZSA+PSBxLT5uKXsKCQlwcmludGYoIlF1ZXVlIG92ZXJmbG93XG4iKTsKCQlleGl0KDEpOwoJfSBlbHNlIHsKCQlxLT5hcnJheVtxLT5yZWFyXSA9IHA7CgkJcS0+cmVhciA9IHEtPnJlYXIgKyAxOwoJCWlmIChxLT5yZWFyID09IHEtPm4pewoJCQlxLT5yZWFyID0gMDsKCQl9CgkJcS0+c2l6ZSA9IHEtPnNpemUgKyAxOwoJfQp9Cgpwb3NpdGlvbiAqZGVxdWV1ZShRdWV1ZSAqcSl7CglpZiAocS0+c2l6ZSA9PSAwKXsKCQlwcmludGYoIlF1ZXVlIHVuZGVyZmxvd1xuIik7CgkJZXhpdCgxKTsKCX0gZWxzZSB7CgkJcG9zaXRpb24gKnRlbXAgPSBxLT5hcnJheVtxLT5mcm9udF07CgkJcS0+ZnJvbnQgPSBxLT5mcm9udCArIDE7CgkJaWYgKHEtPmZyb250ID09IHEtPm4pewoJCQlxLT5mcm9udCA9IDA7CgkJfQoJCXEtPnNpemUgPSBxLT5zaXplIC0gMTsKCQlyZXR1cm4gdGVtcDsKCX0KfQoKaW50IG1haW4odm9pZCl7Cglwb3NpdGlvbiAqcCA9IGNyZWF0ZVBvc2l0aW9uKE5VTEwsIE5VTEwsICd4JywgMSwgNCwgInh5ejEyMzQ1NjAwMiIpOwoJUXVldWUgKnEgPSBjcmVhdGVRdWV1ZSgxMCk7CgllbnF1ZXVlKHEsIHApOwoJcG9zaXRpb24gKnIgPSBkZXF1ZXVlKHEpOwoJcHJpbnRmKCIlYyIsIHItPmJvYXJkWzJdKTsKfQoKCgoK