lista dwukierunkowa F2DA6TW4OI2FJVP3HK3RXEDDNW6SZWKVQ4OUEOY


Mazurkiewicz Rafał

Projekt nr 3

Temat: Wstawianie elementów na listę dwukierunkową.

Po uruchomieniu program ten wyświetla swój nagłówek, a następnie udostępnia kilka opcji: dodanie nowego elementu, wyświetleni wszystkich elementów, informacja o sposobie wprowadzania nowych elementów oraz wyjście z programu. Opcja dodania nowego elementu umożliwia wprowadzenie na listę kolejnego nazwiska, opcja wyświetlania wypisuje wszystkie wprowadzone elementy. Wybranie opcji informacji o wprowadzaniu nowych elementów powoduje wypisanie tychże informacji wraz z rysunkiem.

Listing

plik - „listad.c”

#include <stdio.h>

#include "naglowek.h"

#include "funkcje.c"

void main(void)

{

char ch;

printf("\n\n\tProjekt nr 3\n\tautor: Mazurkiewicz Rafal\n");

while (TRUE)

{

printf("\n Wybierz:\n\t'n'- wprowadzenie nowego elementu");

printf("\n\t'w' wyswietlenie wszystkich elementow");

printf("\n\t'i' informacja o wprowadzaniu elementow");

printf("\n\t'q' wyjscie\n : ");

ch = getc(stdin);

fflush(stdin);

switch(ch)

{

case 'n':

dodaj_nowy(); break;

case 'w':

wyswietl_liste(); break;

case 'i':

informacja();break;

case 'q':

zwolnienie_pamieci(); break;

default:

puts("\nBledna dana wejsciowa");

}

}

}

plik - „funkcje.c”

#include <stdlib.h>

#include <stdio.h>

#include "naglowek.h"

#include "infor.c"

void dodaj_nowy(void)

{

struct element *nowy;

nowy = malloc( sizeof(struct element) );

if (nowy==NULL)

{

printf("Blad alokacji pamieci ");

return;

}

nowy->nastepny = pierwszy;

nowy->poprzedni = NULL;

if (pierwszy != NULL)

pierwszy->poprzedni = nowy;

pierwszy = nowy;

printf("\nPodaj nazwisko: ");

gets(nowy->nazwisko);

}

void wyswietl_liste(void)

{

struct element *tutaj;

int a=1;

if (pierwszy == NULL )

{

printf("\nPusta lista.\n");

return;

}

tutaj = pierwszy;

do

{

printf("\nNazwisko nr%d: %s\n",a, tutaj->nazwisko );

a++;

tutaj = tutaj->nastepny;

}

while(tutaj != NULL);

}

void zwolnienie_pamieci(void)

{

struct element *tutaj, *zwolnij;

if (pierwszy == NULL )

exit(0);

tutaj = pierwszy;

do

{

zwolnij = tutaj;

tutaj = tutaj->nastepny;

free(zwolnij);

}

while(tutaj != NULL);

exit(0);

}

void informacja(void)

{

int b;

for (b=0;b<21;b++)

printf("%s\n",tab[b]);

printf("\nNacisnij ENTER ...");

fflush(stdin);

b=getchar();

}

plik - „naglowek.h”

#ifndef naglowek_h

#define naglowek_h

void dodaj_nowy(void);

void wyswietl_liste(void);

void zwolnienie_pamieci(void);

void informacja(void);

#define TRUE 1

struct element

{

char nazwisko[30];

struct element *nastepny;

struct element *poprzedni;

};

struct element *pierwszy = NULL;

#endif

plik - „infor.c”

char tab [21][70]={" Dodawanie nowego elementu na liste dwukierunkowa. ",

" Aby dodac element na liste dwukierunkowa nalezy najpierw zarezer- ",

"wowac dla tego elementu pamiec. Potem nalezy w elemencie pierwszym ",

"w skladowej 'poprzedni' wstawic adres nowego, do elementu nowy w pole",

"'poprzedni' wprowadzic 'NULL', a w pole 'nastepny' adres elementu ",

"pierwszego ",

" .-----------. .-----------. .-----------. ",

" | | | nazwisko |<-. .->| nazwisko | ",

" |-----------| |-----------| | | |-----------| ",

" | | | nastepny |--|--' | NULL | ",

" |-----------| |-----------| | |-----------| ",

" | | | NULL | `-----| poprzedni | ",

" `-----------' `-----------' `-----------' ",

" nowy pierwszy drugi ",

" .-----------. .-----------. .-----------. ",

" | nazwisko |<-. .->| nazwisko |<-. .->| nazwisko3 | ",

" |-----------| | | |-----------| | | |-----------| ",

" | nastepny |--|--' | nastepny |--|--' | NULL | ",

" |-----------| | |-----------| | |-----------| ",

" | NULL | `-----| poprzedni | `-----| poprzedni | ",

" `-----------' `-----------' `-----------' "};



Wyszukiwarka

Podobne podstrony:
algorytmy lista dwukierunkowa, WAT, SEMESTR II, ALS
Lista dwukierunkowa
Lista 2012 2
Polecenia lista 5
macierze i wyznaczniki lista nr Nieznany
Lista 14
Analiza matematyczna, lista analiza 2008 6 szeregi
Analiza III semestr lista nr 3 Nieznany (2)
lista produktow
podstawy automatyki ćwiczenia lista nr 4b
lista parafraz modu A
Lista watykańskich masonów
Lista czesci
eksploracja lab03, Lista sprawozdaniowych bazy danych
lista przed zabr id 270172 Nieznany
analiza sem 2 lista nr5 id 6134 Nieznany (2)
LISTA 14 Całki krzywoliniowe
lista 04 (2)
lista jednokierunkowa

więcej podobnych podstron