#include <stdio.h>
#include <stdlib.h>
typedef struct elem
{
char value[ 5 ] ;
struct elem * prev, * next;
} elem;
void wstaw( char * tab, elem ** head, elem ** tail) {
elem * tmp; /*wskaznik na nowy element*/
tmp
= ( void * ) malloc ( sizeof ( elem
) ) ; tmp-> prev = NULL;
tmp-> next = ( * head) ;
int i;
for ( i= 0 ; i< 5 ; i++ )
tmp-> value[ i] = tab[ i] ; /*przypisanie wartosci dla tmp*/
if ( ! ( * head) ) /*sprawdzenie czy kolejka byla pusta*/
{
( * head) = tmp; /*przepiecie glowy i ogona na jedyny element*/
( * tail) = tmp;
}
else {
( * head) -> prev= tmp; /*element poprzedni wskazuje na ostatni POPRZEDNI KOLEJNEGO WSKAZUJE NA NOWA WARTOSC */
( * head) = tmp; /*przepiecie glowy na element ostatni, */
}
}
int usun( elem ** head, elem ** tail) {
if ( ! ( * tail) ) /*sprawdza czy kolejka nie jest pusta*/
{
return ;
}
else /*jak nie jest to zdejmuje element*/
{
int x;
elem * tmp;
tmp = ( * tail) ; /* przypisanie tmpowi wartosci tail*/
( * tail) = tmp-> prev; /* przepiecie tail na element wczesniejszy*/
if ( ( * tail) ) /*sprawdza czy po przepieciu tail wskazuje na nulla*/
{
( * tail) -> next = NULL; /*przepiecie tail->next na null*/
}
x= tmp-> value; /*zwrocenie wartosci temu tam po usunieciu*/
return x;
}
}
int kasuj( elem ** tail, elem ** head) {
elem * tmp; /*wskaznik na nowy element*/
* tail= NULL;
* head= NULL;
if ( * tail) {
int x;
elem * tmp;
tmp = ( * tail) ; /* przypisanie tmpowi wartosci tail*/
( * tail) = tmp-> prev; /* przepiecie tail na element wczesniejszy*/
if ( ( * tail) ) /*sprawdza czy po przepieciu tail wskazuje na nulla*/
{
( * tail) -> next = NULL; /*przepiecie tail->next na null*/
}
x= tmp-> value; /*zwrocenie wartosci temu tam po usunieciu*/
}
}
elem szukaj( elem * tail, char * tab) {
if ( ! tail)
{
}
else /*jesli nie jest pusta*/
{
while ( tail) /*przechodzimy petla dopoki tail nie wskazuje na null*/
{
if ( strcmp ( tail
-> value
, tab
) == 0 ) { return * tail;
}
tail = tail-> prev; /*przepinamy tail na wczesniejsz element w klejce*/
}
return nullptr;
}
}
/* int licz1=1;
int licz2=1;
int licz1_1=1;
int licz2_1=1;
int tmp1;
int tmp2;
*/
void wypisz( elem * tail)
{
if ( ! tail)
{
}
else /*jesli nie jest pusta*/
{
while ( tail) /*przechodzimy petla dopoki tail nie wskazuje na null*/
{
printf ( "%s / " , tail
-> value
) ; /*wypisujemy element*/ tail = tail-> prev; /*przepinamy tail na wczesniejsz element w klejce*/
}
}
}
int main( )
{
elem * head= NULL;
elem * tail= NULL;
char slowo1[ 5 ] = "ala" ;
char slowo2[ 5 ] = "ma" ;
char slowo3[ 5 ] = "kota" ;
char slowo4[ 5 ] = "kota" ;
wstaw( slowo1,& head, & tail) ;
wstaw( slowo2,& head, & tail) ;
wstaw( slowo3,& head, & tail) ;
wstaw( slowo4,& head, & tail) ;
wypisz( tail) ;
printf ( "Szukam slowa 'ma' \n " ) ; szukaj( tail, slowo2) ;
/*printf("wywalilem : %d",usun(&head,&tail));
printf("\nDodaje 11 i 34 do listy");
wstaw(11,&head, &tail);
wstaw(34,&head, &tail);
printf("\n");
wypisz(tail);
printf("\n\n");
printf("Podaj zmienna do poszukania: \n");
scanf("%d", &zk);
printf("\n");
szukaj(tail, zk);
printf("\n");
wypisz(tail);
kasuj(&tail, &head);
printf("\n");
printf("Wypisuje liste:\n");
wypisz(tail);*/
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KdHlwZWRlZiBzdHJ1Y3QgZWxlbQp7CiAgICBjaGFyIHZhbHVlWzVdOwogICAgc3RydWN0IGVsZW0gKnByZXYsICpuZXh0Owp9IGVsZW07CgoKdm9pZCB3c3RhdyhjaGFyICp0YWIsIGVsZW0gKipoZWFkLCBlbGVtICoqdGFpbCl7CiAgICBlbGVtICp0bXA7CS8qd3NrYXpuaWsgbmEgbm93eSBlbGVtZW50Ki8KICAgIHRtcD0odm9pZCAqKW1hbGxvYyhzaXplb2YoZWxlbSkpOwogICAgdG1wLT5wcmV2ID0gTlVMTDsKICAgIHRtcC0+bmV4dCA9ICgqaGVhZCk7CiAgICBpbnQgaTsKICAgIGZvcihpPTA7IGk8NTsgaSsrKQogICAgdG1wLT52YWx1ZVtpXT10YWJbaV07CSAvKnByenlwaXNhbmllIHdhcnRvc2NpIGRsYSB0bXAqLwogICAgaWYoISgqaGVhZCkpCSAvKnNwcmF3ZHplbmllIGN6eSBrb2xlamthIGJ5bGEgcHVzdGEqLwogICAgewogICAgICAgICgqaGVhZCkgPSB0bXA7CS8qcHJ6ZXBpZWNpZSBnbG93eSBpIG9nb25hIG5hIGplZHlueSBlbGVtZW50Ki8KICAgICAgICAoKnRhaWwpID0gdG1wOwogICAgfQogICAgZWxzZXsKICAgICAgICAoKmhlYWQpLT5wcmV2PXRtcDsgLyplbGVtZW50IHBvcHJ6ZWRuaSB3c2thenVqZSBuYSBvc3RhdG5pIFBPUFJaRUROSSBLT0xFSk5FR08gV1NLQVpVSkUgTkEgTk9XQSBXQVJUT1NDICovCiAgICAgICAgKCpoZWFkKSA9IHRtcDsJLypwcnplcGllY2llIGdsb3d5IG5hIGVsZW1lbnQgb3N0YXRuaSwgKi8KICAgIH0KfQoKCmludCB1c3VuKGVsZW0gKipoZWFkLCBlbGVtICoqdGFpbCl7CmlmKCEoKnRhaWwpKQkvKnNwcmF3ZHphIGN6eSBrb2xlamthIG5pZSBqZXN0IHB1c3RhKi8KewogICAgcHJpbnRmKCJsaXN0YSBwdXN0YSIpOwkKICAgIHJldHVybiA7Cn0KZWxzZQkvKmphayBuaWUgamVzdCB0byB6ZGVqbXVqZSBlbGVtZW50Ki8KewogICAgaW50IHg7CiAgICBlbGVtICp0bXA7CiAgICB0bXAgPSAoKnRhaWwpOwkvKiBwcnp5cGlzYW5pZSB0bXBvd2kgd2FydG9zY2kgdGFpbCovCiAgICAoKnRhaWwpID0gdG1wLT5wcmV2OwkvKiBwcnplcGllY2llIHRhaWwgbmEgZWxlbWVudCB3Y3plc25pZWpzenkqLwppZigoKnRhaWwpKQkvKnNwcmF3ZHphIGN6eSBwbyBwcnplcGllY2l1IHRhaWwgd3NrYXp1amUgbmEgbnVsbGEqLwp7CiAgICAoKnRhaWwpLT5uZXh0ID0gTlVMTDsgLypwcnplcGllY2llIHRhaWwtPm5leHQgbmEgbnVsbCovCn0KeD10bXAtPnZhbHVlOwkvKnp3cm9jZW5pZSB3YXJ0b3NjaSB0ZW11IHRhbSBwbyB1c3VuaWVjaXUqLwpmcmVlKHRtcCk7CnJldHVybiB4Owp9Cn0KCgppbnQga2FzdWooZWxlbSAqKnRhaWwsIGVsZW0gKipoZWFkKXsKZWxlbSAqdG1wOwkvKndza2F6bmlrIG5hIG5vd3kgZWxlbWVudCovCip0YWlsPU5VTEw7CipoZWFkPU5VTEw7CnByaW50ZigiXG5Vc3V3YW06Iik7CmlmKCp0YWlsKXsKICAgIGludCB4OwogICAgZWxlbSAqdG1wOwogICAgdG1wID0gKCp0YWlsKTsJLyogcHJ6eXBpc2FuaWUgdG1wb3dpIHdhcnRvc2NpIHRhaWwqLwogICAgKCp0YWlsKSA9IHRtcC0+cHJldjsJLyogcHJ6ZXBpZWNpZSB0YWlsIG5hIGVsZW1lbnQgd2N6ZXNuaWVqc3p5Ki8KaWYoKCp0YWlsKSkJLypzcHJhd2R6YSBjenkgcG8gcHJ6ZXBpZWNpdSB0YWlsIHdza2F6dWplIG5hIG51bGxhKi8KewogICAgKCp0YWlsKS0+bmV4dCA9IE5VTEw7IC8qcHJ6ZXBpZWNpZSB0YWlsLT5uZXh0IG5hIG51bGwqLwp9Cng9dG1wLT52YWx1ZTsJLyp6d3JvY2VuaWUgd2FydG9zY2kgdGVtdSB0YW0gcG8gdXN1bmllY2l1Ki8KZnJlZSh0bXApOwp9Cgp9CgplbGVtIHN6dWthaihlbGVtICp0YWlsLCBjaGFyICp0YWIpewogIGlmKCF0YWlsKQogICAgewogICAgICAgIHByaW50Zigia29sZWprYSBwdXN0YSIpOwogICAgfQogICAgZWxzZQkvKmplc2xpIG5pZSBqZXN0IHB1c3RhKi8KICAgIHsKICAgICAgICB3aGlsZSh0YWlsKSAvKnByemVjaG9kemlteSBwZXRsYSBkb3Bva2kgdGFpbCBuaWUgd3NrYXp1amUgbmEgbnVsbCovCiAgICAgICAgewogICAgICAgICAgICBpZihzdHJjbXAodGFpbC0+dmFsdWUsIHRhYik9PTApewogICAgICAgICAgICByZXR1cm4gKnRhaWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGFpbCA9IHRhaWwtPnByZXY7IC8qcHJ6ZXBpbmFteSB0YWlsIG5hIHdjemVzbmllanN6IGVsZW1lbnQgdyBrbGVqY2UqLwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgIH0KfQoKICAvKiAgICAgIGludCBsaWN6MT0xOwogICAgICAgIGludCBsaWN6Mj0xOwogICAgICAgIGludCBsaWN6MV8xPTE7CiAgICAgICAgaW50IGxpY3oyXzE9MTsKICAgICAgICBpbnQgdG1wMTsKICAgICAgICBpbnQgdG1wMjsKKi8KCgp2b2lkIHd5cGlzeihlbGVtICp0YWlsKQp7CiAgICBpZighdGFpbCkKICAgIHsKICAgICAgICBwcmludGYoImtvbGVqa2EgcHVzdGEiKTsKICAgIH0KICAgIGVsc2UJLypqZXNsaSBuaWUgamVzdCBwdXN0YSovCiAgICB7CiAgICAgICAgd2hpbGUodGFpbCkgLypwcnplY2hvZHppbXkgcGV0bGEgZG9wb2tpIHRhaWwgbmllIHdza2F6dWplIG5hIG51bGwqLwogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIlcyAvICIsdGFpbC0+dmFsdWUpOyAvKnd5cGlzdWplbXkgZWxlbWVudCovCiAgICAgICAgICAgIHRhaWwgPSB0YWlsLT5wcmV2OyAvKnByemVwaW5hbXkgdGFpbCBuYSB3Y3plc25pZWpzeiBlbGVtZW50IHcga2xlamNlKi8KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIiKTsKICAgIH0KfQoKaW50IG1haW4oKQp7CmVsZW0gKmhlYWQ9TlVMTDsKZWxlbSAqdGFpbD1OVUxMOwoKY2hhciBzbG93bzFbNV0gPSAiYWxhIjsKY2hhciBzbG93bzJbNV0gPSAibWEiOwpjaGFyIHNsb3dvM1s1XSA9ICJrb3RhIjsKY2hhciBzbG93bzRbNV0gPSAia290YSI7Cgp3c3RhdyhzbG93bzEsJmhlYWQsICZ0YWlsKTsKd3N0YXcoc2xvd28yLCZoZWFkLCAmdGFpbCk7CndzdGF3KHNsb3dvMywmaGVhZCwgJnRhaWwpOwp3c3RhdyhzbG93bzQsJmhlYWQsICZ0YWlsKTsKCnByaW50ZigiV3lwaXN1amUgbGlzdGU6XG4iKTsKd3lwaXN6KHRhaWwpOwpwcmludGYoIlxuIik7CgpwcmludGYoIlN6dWthbSBzbG93YSAnbWEnIFxuIik7CnN6dWthaih0YWlsLCBzbG93bzIpOwoKCgoKcHJpbnRmKCJcbiIpOwovKnByaW50Zigid3l3YWxpbGVtIDogJWQiLHVzdW4oJmhlYWQsJnRhaWwpKTsKCnByaW50ZigiXG5Eb2RhamUgMTEgaSAzNCBkbyBsaXN0eSIpOwp3c3RhdygxMSwmaGVhZCwgJnRhaWwpOwp3c3RhdygzNCwmaGVhZCwgJnRhaWwpOwpwcmludGYoIlxuIik7Cnd5cGlzeih0YWlsKTsKcHJpbnRmKCJcblxuIik7CnByaW50ZigiUG9kYWogem1pZW5uYSBkbyBwb3N6dWthbmlhOiBcbiIpOwpzY2FuZigiJWQiLCAmemspOwpwcmludGYoIlxuIik7CnN6dWthaih0YWlsLCB6ayk7CnByaW50ZigiXG4iKTsKd3lwaXN6KHRhaWwpOwprYXN1aigmdGFpbCwgJmhlYWQpOwpwcmludGYoIlxuIik7CnByaW50ZigiV3lwaXN1amUgbGlzdGU6XG4iKTsKd3lwaXN6KHRhaWwpOyovCnJldHVybiAwOwp9Cg==
compilation info
prog.c: In function 'usun':
prog.c:34:5: warning: 'return' with no value, in function returning non-void
return ;
^
prog.c:46:2: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
x=tmp->value; /*zwrocenie wartosci temu tam po usunieciu*/
^
prog.c: In function 'kasuj':
prog.c:67:2: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
x=tmp->value; /*zwrocenie wartosci temu tam po usunieciu*/
^
prog.c:59:9: warning: variable 'x' set but not used [-Wunused-but-set-variable]
int x;
^
prog.c:54:7: warning: unused variable 'tmp' [-Wunused-variable]
elem *tmp; /*wskaznik na nowy element*/
^
prog.c: In function 'szukaj':
prog.c:82:16: warning: implicit declaration of function 'strcmp' [-Wimplicit-function-declaration]
if(strcmp(tail->value, tab)==0){
^
prog.c:87:16: error: 'nullptr' undeclared (first use in this function)
return nullptr;
^
prog.c:87:16: note: each undeclared identifier is reported only once for each function it appears in
prog.c: In function 'wypisz':
prog.c:113:16: warning: zero-length gnu_printf format string [-Wformat-zero-length]
printf("");
^
prog.c: In function 'kasuj':
prog.c:71:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
prog.c: In function 'szukaj':
prog.c:89:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
stdout