listy dwukierunkowe
: 10 sty 2010, o 21:36
Musze napisać program który tworzy listę, tak żeby można było do niej coś dopisywać (wskazać na jeden element i po nim dodać jakiś nowy element).
Napisałem cos takiego:
Sama funkcja dodawania raczej jest dobra, ale jak pierwszy raz pościłem program to można było dopisywać poszczególne liczby, a teraz już po pierwszym się wysypuje i nie wiem dlaczego.
Poza tym mam pytanie, jak mam zrobić takie coś żebym mógł wybierać jeden element i po nim coś wpisać lub go usunąć. Bo te elementy się w ogóle nie nazywają to jak się do nich odwołać. Skoro ten pierwszy jest "wskazany"(tak go nazwałem), następny ma tylko wskaźnik do wskazanego, jeszcze następny do tego drugiego itd. to jak to zrobić żeby po wypisaniu x elementów nagle wskazać np. na 5 ? albo wypisać 5,6 i 10 ?
Napisałem cos takiego:
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
struct element
{
float wartosc;
struct element *prev;
struct element *next;
};
int dodaj (struct element *wskazany, float liczba)
{
struct element *nowy;
nowy=(struct element*)malloc(sizeof(struct element));
nowy->wartosc=liczba;
nowy->next=wskazany->next;
nowy->prev=wskazany;
wskazany->next=nowy;
nowy->next->prev=nowy;
free(nowy);
return 1;
};
void wypisz (struct element *wskazany)
{
printf("ten element to %f
",wskazany->wartosc);
};
int main(int argc, char *argv[])
{
struct element *wskazany = NULL;
float x;
while(x!=0)
{
wypisz(&wskazany);
scanf("%f",&x);
dodaj (&wskazany,x);
};
system("PAUSE");
return 0;
}
Poza tym mam pytanie, jak mam zrobić takie coś żebym mógł wybierać jeden element i po nim coś wpisać lub go usunąć. Bo te elementy się w ogóle nie nazywają to jak się do nich odwołać. Skoro ten pierwszy jest "wskazany"(tak go nazwałem), następny ma tylko wskaźnik do wskazanego, jeszcze następny do tego drugiego itd. to jak to zrobić żeby po wypisaniu x elementów nagle wskazać np. na 5 ? albo wypisać 5,6 i 10 ?