/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node * next;
struct node * prev;
} node_t;
typedef struct {
node_t * next;
node_t * prev;
int len;
int size;
} list_t;
#define MAX_Q 1000
list_t * list_init( int size) {
list_t * list;
if ( size <= 0 || size > MAX_Q)
return NULL;
list
= malloc ( sizeof ( list_t
) ) ; if ( list == NULL)
return NULL;
list-> len = 0 ;
list-> size = size;
list-> next = NULL;
list-> prev = NULL;
return list;
}
int list_add( list_t * list, int val) {
node_t * new_node;
if ( list-> len + 1 > list-> size)
return - 1 ;
new_node
= malloc ( sizeof ( node_t
) ) ; if ( new_node == NULL)
return - 1 ;
list-> len++;
new_node-> data = val;
new_node-> prev = NULL;
new_node-> next = list-> next;
list-> next = new_node;
if ( list-> prev != NULL)
new_node-> next-> prev = new_node;
else
list-> prev == new_node;
return 0 ;
}
int list_pop( list_t * list, int location) {
return - 1 ;
}
int list_mean( list_t * list) {
return - 1 ;
}
void list_pring( list_t * list)
{
node_t * node;
if ( list == NULL)
return ;
if ( list-> len == 0 ) {
return ;
}
node = list-> next;
printf ( "list had %d items: " , list
-> len
) ; while ( node) {
node = node-> next;
}
node = list-> prev;
while ( node) {
node = node-> prev;
}
}
int main( )
{
int i, ret;
list_t * my_list;
my_list = list_init( 10 ) ;
if ( ! my_list) {
printf ( "failed to allocate a list\n " ) ; return - 1 ;
}
for ( i= 1 ; i < 15 ; i++ ) {
ret = list_add( my_list, i) ;
if ( ret)
printf ( "failed to add %d\n " , i
) ; else
list_pring( my_list) ;
}
return 0 ;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubGluZSBDIENvbXBpbGVyLgogICAgICAgICAgICAgICAgQ29kZSwgQ29tcGlsZSwgUnVuIGFuZCBEZWJ1ZyBDIHByb2dyYW0gb25saW5lLgpXcml0ZSB5b3VyIGNvZGUgaW4gdGhpcyBlZGl0b3IgYW5kIHByZXNzICJSdW4iIGJ1dHRvbiB0byBjb21waWxlIGFuZCBleGVjdXRlIGl0LgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmxpbmUgQyBDb21waWxlci4KICAgICAgICAgICAgICAgIENvZGUsIENvbXBpbGUsIFJ1biBhbmQgRGVidWcgQyBwcm9ncmFtIG9ubGluZS4KV3JpdGUgeW91ciBjb2RlIGluIHRoaXMgZWRpdG9yIGFuZCBwcmVzcyAiUnVuIiBidXR0b24gdG8gY29tcGlsZSBhbmQgZXhlY3V0ZSBpdC4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIHN0cnVjdCBub2RlICpuZXh0OwogICAgc3RydWN0IG5vZGUgKnByZXY7Cn0gbm9kZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgbm9kZV90ICpuZXh0OwogICAgbm9kZV90ICogcHJldjsKICAgIGludCBsZW47CiAgICBpbnQgc2l6ZTsKfSBsaXN0X3Q7CgojZGVmaW5lIE1BWF9RIDEwMDAKbGlzdF90ICpsaXN0X2luaXQoaW50IHNpemUpIHsKICAgIGxpc3RfdCAqbGlzdDsKICAgIAogICAgaWYgKHNpemUgPD0gMCB8fCBzaXplID4gTUFYX1EpCiAgICAgICAgcmV0dXJuIE5VTEw7CgogICAgbGlzdCA9IG1hbGxvYyhzaXplb2YobGlzdF90KSk7CiAgICBpZiAobGlzdCA9PSBOVUxMKQogICAgICAgIHJldHVybiBOVUxMOwogICAgICAgIAogICAgbGlzdC0+bGVuID0gMDsKICAgIGxpc3QtPnNpemUgPSBzaXplOwogICAgbGlzdC0+bmV4dCA9IE5VTEw7CiAgICBsaXN0LT5wcmV2ID0gTlVMTDsKICAgIAogICAgcmV0dXJuIGxpc3Q7Cn0KCmludCBsaXN0X2FkZChsaXN0X3QgKmxpc3QsIGludCB2YWwpIHsKICAgIG5vZGVfdCAqbmV3X25vZGU7CiAgICAKICAgIGlmIChsaXN0LT5sZW4gKyAxID4gbGlzdC0+c2l6ZSkKICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgCiAgICBuZXdfbm9kZSA9IG1hbGxvYyhzaXplb2Yobm9kZV90KSk7CiAgICBpZiAobmV3X25vZGUgPT0gTlVMTCkKICAgICAgICByZXR1cm4gLTE7CiAgICAKICAgIGxpc3QtPmxlbisrOwogICAgbmV3X25vZGUtPmRhdGEgPSB2YWw7CiAgICBuZXdfbm9kZS0+cHJldiA9IE5VTEw7CiAgICBuZXdfbm9kZS0+bmV4dCA9IGxpc3QtPm5leHQ7CiAgICBsaXN0LT5uZXh0ID0gbmV3X25vZGU7CiAgICBpZiAobGlzdC0+cHJldiAhPSBOVUxMKQogICAgICAgICBuZXdfbm9kZS0+bmV4dC0+cHJldiA9IG5ld19ub2RlOwogICAgZWxzZQogICAgICAgIGxpc3QtPnByZXYgPT0gbmV3X25vZGU7CgogICAgcmV0dXJuIDA7Cn0KCmludCBsaXN0X3BvcChsaXN0X3QgKmxpc3QsIGludCBsb2NhdGlvbikgewogICAgcmV0dXJuIC0xOwp9CgppbnQgbGlzdF9tZWFuKGxpc3RfdCAqbGlzdCkgewogICAgcmV0dXJuIC0xOwp9Cgp2b2lkIGxpc3RfcHJpbmcobGlzdF90ICpsaXN0KQp7CiAgICBub2RlX3QgKm5vZGU7CiAgICAKICAgIGlmIChsaXN0ID09IE5VTEwpCiAgICAgICAgcmV0dXJuOwogICAgICAgIAogICAgaWYgKGxpc3QtPmxlbiA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCJMaXN0IGlzIGVtcHR5Iik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBub2RlID0gbGlzdC0+bmV4dDsKICAgIHByaW50ZigibGlzdCBoYWQgJWQgaXRlbXM6ICIsIGxpc3QtPmxlbik7CiAgICB3aGlsZShub2RlKSB7CiAgICAgICAgcHJpbnRmKCIlZCAiLCBub2RlLT5kYXRhKTsKICAgICAgICBub2RlID0gbm9kZS0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKCiAgICBub2RlID0gbGlzdC0+cHJldjsKICAgIHdoaWxlKG5vZGUpIHsKICAgICAgICBwcmludGYoIiVkICIsIG5vZGUtPmRhdGEpOwogICAgICAgIG5vZGUgPSBub2RlLT5wcmV2OwogICAgfQogICAgcHJpbnRmKCJcbiIpOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBpLCByZXQ7CiAgICBsaXN0X3QgKm15X2xpc3Q7CiAgICAKICAgIG15X2xpc3QgPSBsaXN0X2luaXQoMTApOwogICAgaWYgKCFteV9saXN0KSB7CiAgICAgICAgcHJpbnRmKCJmYWlsZWQgdG8gYWxsb2NhdGUgYSBsaXN0XG4iKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICAKICAgIGZvciAoaT0xOyBpIDwgMTU7IGkrKykgewogICAgICAgIHJldCA9IGxpc3RfYWRkKG15X2xpc3QsIGkpOwogICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgIHByaW50ZigiZmFpbGVkIHRvIGFkZCAlZFxuIiwgaSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBsaXN0X3ByaW5nKG15X2xpc3QpOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQo=