Zarządzanie i Inżynieria Produkcji, Wydział Informatyki, Politechnika Szczecińska
heh spytalem kumpla z infy czy mi zrobi program i kilkakrotnie podkreslalem ze ma byc prymitywny i prosty... no sami zobaczcie co mi dal ;p
#include <stdio.h>
typedef struct NODE
{
struct NODE *prev;
struct NODE *next;
int data;
} NODE;
typedef struct LIST
{
struct NODE *first;
struct NODE *last;
} LIST;
NODE *create_node(void)
{
NODE *ret = (NODE *) malloc(sizeof(struct NODE));
if (!ret) // zabraklo pamieci, zwroc 0
return 0;
ret->prev = 0;
ret->next = 0;
ret->data = 0;
return ret;
}
LIST *create_list(void)
{
LIST *ret = (LIST *) malloc(sizeof(LIST));
if (!ret)
return 0;
ret->first = 0;
ret->last = 0;
return ret;
}
int add(struct LIST *list, int data)
{
NODE *add = create_node();
NODE *node;
if (!add)
return -1;
add->data = data;
if (!list->first)
{
list->first = add;
return 0;
}
for (node = list->first; node->next != 0; node = node->next)
;
node->next = add;
add->prev = node;
list->last = add;
return 0;
}
int remove_by_data(struct LIST *list, int data)
{
NODE *node = list->first;
NODE *del;
while (node)
{
if (node->data == data)
{
if (node->prev)
node->prev->next = node->next;
if (node->next)
node->next->prev = node->prev;
del = node;
}
else
del = 0;
node = node->next;
if (del)
free(del);
}
return 0;
}
void destroy_list(struct LIST *list)
{
NODE *node = list->first;
NODE *del = 0;
while (node)
{
del = node;
node = node->next;
free(del);
}
free(list);
}
void print_list(struct LIST *list)
{
NODE *node = list->first;
while (node)
{
printf("%d", node->data);
if (node->next)
printf("-");
node = node->next;
}
printf("\n");
}
int main()
{
int i,z;
struct LIST *list = create_list();
for(i=1;i<10;i++)add(list, i);
print_list(list);
printf("ktora skasowac?")
scanf("&d",z);
remove_by_data(list,z);
print_list(list);
destroy_list(list);
return 0;
}
heh postaram sie to moze jeszcze dzisiaj uda mi sie zdobyc wersje prosta :PP ale jesli ktos czai to cos na gorze to moze przykozaczyc jutro ;p
edit: wprowadzilem mala poprawke aby spelnialo dokladnie to co gosciu chcial
PS: dobra a teraz gdzie moje piwo ;D?
Offline
ZIP 10
a sprawdzales czy wogole dziala ?wielkie dzieki znow
Offline
Soli napisał:
list->first = add;
return 0;
}
for (node = list->first; node->next != 0; node = node->next)
;
node->next = add;
add->prev = node;
donald_w (29-05-2007 21:08)
list->last = add;
return 0;
}
int remove_by_data(struct LIST *list, int data)
{
NODE *node = list->first;
NODE *del;
while (node)
{
rozumiem, że bez daty i godziny, w której to dostałeś program działać nie będzie ?
Offline
moo-moo napisał:
Soli napisał:
list->first = add;
return 0;
}
for (node = list->first; node->next != 0; node = node->next)
;
node->next = add;
add->prev = node;
donald_w (29-05-2007 21:08)
list->last = add;
return 0;
}
int remove_by_data(struct LIST *list, int data)
{
NODE *node = list->first;
NODE *del;
while (node)
{rozumiem, że bez daty i godziny, w której to dostałeś program działać nie będzie
?
gdzie ty to widzisz ;>?
Offline
Soli napisał:
moo-moo napisał:
Soli napisał:
list->first = add;
return 0;
}
for (node = list->first; node->next != 0; node = node->next)
;
node->next = add;
add->prev = node;
donald_w (29-05-2007 21:08)
list->last = add;
return 0;
}
int remove_by_data(struct LIST *list, int data)
{
NODE *node = list->first;
NODE *del;
while (node)
{rozumiem, że bez daty i godziny, w której to dostałeś program działać nie będzie
?
gdzie ty to widzisz ;>?
baaaardzo zabawne atak fajnie było i wszyscy by się dziwili czemu nie działa
albo mieliby problem jakby się gościu od laboratoriów zapytał do czego służy donald
Offline
hehe ;p niema to jak power of edit ^^
ale ciekawe czy ktos by wszyscy tak przepisali ;p pewnie tak bo i tak wszyscy ctrl+c ctrl+v robia ;p
PS: osobiscie to czaje ten program ale jak ten maly czarny terrorysta zacznie pytac o te jego jebane szczegoliki to ja odpadam ;p
Offline
ZIP 10
#include <stdio.h>
#include <stdlib.h>
struct node
{
int a;
int b;
struct node *next;
struct node *previous;
};
void main()
{
struct node *tmp, *root, *tmp1;
int i, w;
tmp = (struct node*)malloc(sizeof(struct node));
tmp->previous = NULL;
root = tmp;
for(i=1;i<=10;i++)
{
tmp->next = (struct node*)malloc(sizeof(struct node));
tmp1 = tmp;
tmp = tmp->next;
tmp->previous = tmp1;
tmp->a = i;
printf("%d\n", tmp->a);
}
tmp->next = NULL;
printf("Podaj element do skasowania:\n");
scanf("%d", &w);
tmp = root->next;
while(tmp)
{
if(tmp->a == w)
{
break;
}
else
{
tmp = tmp->next;
if(tmp == 0)
{
printf("Podano nieprawidlowo\n");
getch();
exit(0);
}
}
}
free((void*)tmp);
getch();
}
A ja mam taka wersje! Ale nie wiem czy to jest dobrze... Bo on wyswietla mi elementy od 1 do 10, pyta co usunąć i niby to robi ale potem juz nie wyswietla tych cyfr bez tej usunietej.
W kazdym razie wyglada krocej i bez bledow.
wersja na samo usuwanie
Offline
Jako że jestem współałtorem wyżej wymienionego programu dodam tylko, że przerobiłem program źle napisany/przepisany na/z tablicy tak, żeby działał. Gdzieś intuicyjnie dodałem coś od siebie bo czułem że taki był zamysł tego Waszego kolaboranta. Nie wiem czy to jest dobrze, bo nawet nie znam treści zadania. Zrobiłem tylko żeby się kompilował i robił to co wydawało mi się że ma robić.
Offline
ZIP 10
EDIT:
dla chetnych informacja:
oba programy i od soliego i od kaski sa takie same pod wzgledem fnkcjonalnosci, tzn kompiluja sie po drobnych korektach kosetycznych, uruchamiaja, wyswietalaja liste i pytaj o element do usuniecia.
tu drogi sie rozjezdzaja, program kasi pyta o element i odrazu sie zamyka po wybraniu elementu
program soliego po wybraniu elementu do usuniecia wyswietla jeszcze raz pierwotna liste i zamyka sie
to takie info jakby ktos tylko wyslal sobie te programy liczac ze ktorys dziala na bank, zeby sie na zajeciach nie zdziwil.
Ostatnio edytowany przez Pap (2007-05-30 22:58:14)
Offline
to co dała tutaj Kasia jest niemalże identyczne do tego co gościu pisał na tablicy, różni się naprawdę niewiele i myślę, że on coś takiego właśnie chce. Bo to co dał tutali Soli ma troszkę inaczej sformułowane funkcje niż były podawane na zajęciach
Offline
ZIP 10
Lepiej było miec dzisiaj taki program niż żaden nie narzekać
Offline