lista jednokierunkowa

background image

program ListaJednokierunkowa;
uses crt;
type
Wskaznik = ^ElementListy;
ElementListy = record
indeks : integer;
nast : Wskaznik;
end;



procedure Tworzenie(var pocz: Wskaznik);
var q : Wskaznik;
x:integer;

begin
writeln('Podaj ilosc elementow listy');
readln(x);
while x>0 do
begin
New(q);
q^.indeks:=x;
q^.nast:=pocz;
pocz:=q;
x:=x-1;
end;
end;

procedure Wyswietlanie(var pocz: Wskaznik);
var q : Wskaznik;

begin
q:=pocz;
writeln('Elementy listy:');
while q <> nil do
begin
WriteLn(q^.indeks);
q:=q^.nast;
end;
writeln;
end;

procedure DodawaniePierwszego (var pocz :Wskaznik);
var
q : Wskaznik;
x : integer;
begin
writeln('Podaj dane do dodania');
readln(x);
New(q);
q^.nast:=pocz;
pocz:=q;
q^.indeks:=x;
end;

procedure DolaczElement(var pocz: Wskaznik);
var q,t : Wskaznik;
id, dane: integer;

background image


begin
writeln('Po ktorym elemencie dodac dane?' );
readln(id);
writeln('Podaj dane do dodania');
readln(dane);
t:=pocz;
while (t <> nil) and (t^.indeks <> id) do
t:=t^.nast;

New(q);
q^.indeks:=dane;
q^.nast:=t^.nast;
t^.nast:=q;
end;

procedure UsunElement(var pocz: Wskaznik);
var q,p,t: Wskaznik;
dane:integer;
begin
writeln('Podaj element do usuniecia');
readln(dane);
q:=pocz;
while (q <> nil) and (q^.indeks <> dane) do
begin
p:=q;
q:=q^.nast;
end;
if q = pocz then
pocz:=q^.nast
else
p^.nast:=q^.nast;

Dispose(q);
end;

procedure UsunListe(var pocz: Wskaznik);
var q:Wskaznik;

begin
while pocz<>nil do
begin
q:=pocz;
pocz:=pocz^.nast;
dispose(q);
end;
writeln ('lista zostala usunieta');
end;

function PustaLista (var pocz: Wskaznik):boolean;
begin

if pocz= nil then writeln ('Lista pusta')
else writeln ('Lista nie jest pusta');
PustaLista:=Pocz=Nil;
end;

background image

function DlugoscListy (var pocz: Wskaznik):integer;
var q: Wskaznik;
l: integer;
BEGIN
q:=pocz;
l:=0;
while q<>nil do
begin
l:= l+1;
q:=q^.nast;
end;

writeln ('Lista ma dlugosc: ',l);
DlugoscListy:=l;
END;


procedure Wyszukaj(var pocz: Wskaznik);
var q: Wskaznik;
x: integer;
b:boolean;
Begin
writeln('Jakiego elementu szukasz?' );
readln(x);
q:=pocz;
b:=true;
while (q <> nil) and b do
if q^.indeks= x then b:= false
else q:=q^.nast;
if q = nil then writeln ('Elmentu nie ma w liscie')
else writeln ('Element znajduje sie w liscie ');
end;

var
glowa: Wskaznik;
menu:char;

begin
glowa:=nil;
clrScr;
writeln('1 - Generacja listy');
writeln('2 - Dodawanie po okreslonym');
writeln('3 - Dodawanie pierwszego');
writeln('4 - Usuwanie dowolnego');
writeln('5 - Wsywietlanie listy');
writeln('6 - Czy lista pusta?');
writeln('7 - Jak dluga jest lista?');
writeln('8 - Wyszukiwanie elementu w liscie');
writeln('9 - Usun cala liste');
writeln('0 - KONIEC');
writeln;
repeat

menu:=readkey;
case menu of
'1': Tworzenie(glowa);
'2': DolaczElement(glowa);
'3': DodawaniePierwszego(glowa);

background image

'4': UsunElement(glowa);
'5': Wyswietlanie(glowa);
'6': PustaLista (glowa);
'7': DlugoscListy (glowa);
'8': Wyszukaj (glowa);
'9': UsunListe (glowa);
end;
until menu='0';
end.

W oparciu o powyższy program napisać procedury:

1. Utworzenie listy:

a. w porządku prostym – elementy w liście w kolejności wstawiania, klucze

podawane przez użytkownika;

b. w porządku niemalejącym – wstawianie do listy z jednoczesnym sortowaniem;

c. dołączanie na koniec listy elementu - wersja rekurencyjna procedury;

2. Wydrukowanie listy w kolejności (wersje rekurencyjne procedur):

a. od pierwszego do ostatniego elementu;

b. od ostatniego do pierwszego;

c. wydrukowanie tylko ostatniego elementu listy;


Wyszukiwarka

Podobne podstrony:
Lista jednokierunkowa
Lista jednokierunkowa zamiana kolejności
organizmy jednokomórkowe są różnorodne
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)

więcej podobnych podstron