Implementarea tipului de date abstract - lista simplu înlănțuită în C

Laborator
9/10 (4 voturi)
Conține 10 fișiere: docx, jpg, cpp, h, exe, txt
Pagini : 11 în total
Cuvinte : 2870
Mărime: 303.65KB (arhivat)
Publicat de: Pamfil Cîrstea
Puncte necesare: 0
Implementarea tipului de date abstract “Lista simplu inlantuita” in C Crearea unei liste cu automobile

Extras din laborator

Lucrare de laborator Nr.2 si 3

Tema: Implementarea tipului de date abstract “Lista simplu inlantuita” in C

Scopul lucrarii: obtinerea deprinderilor practice de implementare a unui tip de date abstract (TDA) in limbajul C si anume a TDA “Lista simplu inlantuita”

Sarcina de lucru: De scris trei fisiere in limbajul C pentru implementarea (2 fisiere) si utilizarea (1 fisier – program cu functia main ) a TDA “Lista simplu inlantuita”:

1. Fișierul antet cu extensia .h care descrie structura de date a elementului listei simplu inlantuite (conform variantei din lucrare precedenta) și prototipurile funcțiilor care asigură operațiunile de prelucrare a listei simplu inlantuite.

2. Fișier cu extensia .cpp (sau .c) care contine codurile (implementarile) tuturor functiilor declarate în fișierul antet.

3. Fișierul utilizatorului - programul cu funcția main () pentru prelucrarea listei simplu inlantuite cu afisarea meniului de optiuni pe ecran, si anume: crearea listei simplu inlantuite in memoria dinamica, introducerea informatiei despre elementele listei de la tastatura, afisarea informatiei despre elementele listei pe ecran, cautarea elementului listei dupa unui cimp informational, modificarea cimpurilor elementului listei, interschimbarea a 2 elemente listei, determinarea lungimei listei, sortarea elementelor listei dupa unui cimp, eliberarea memoriei dinamice alocate pntru lista (lucrare de laborator 2), adaugarea unui element nou la sfirsitul listei, inserarea unui element nou in lista dupa elementul indicat, inserarea unui element nou in lista inainte elementul indicat, stergerea unui element al listei, divizarea listei simplu inlantuite in doua liste separate, unirea a 2 liste simlu inlantuite separate intr-o singura lista, scrierea informatiei despre elementele listei in fisier, citirea informatiei despre elementele listei dintr-un fișier, ieșire din program (lucrari de laborator 2 si 3).

Descrierea scurta a teoriei care se refera la tema lucrarii de laborator si metode folosite.

Structura de date listă

În cadrul structurilor avansate de date, structura listă ocupă un loc important.O listă, este o structură dinamică, care se defineşte pornind de la noţiunea de vector. Elementele unei liste sunt toate de acelaşi tip şi sunt înregistrate în memoria centrală a sistemului de calcul.Spre deosebire de structura statică tablou la care se impune ca numărul componentelor să fie constant, în cazul listelor acest număr poate fi variabil, chiar nul. Listele sunt structuri flexibi le particulare, care funcţie de necesităţi pot creşte sau descreşte şi ale căror elemente pot fi referite, inserate sau şterse în orice poziţie din cadrul listei. Două sau mai multe liste pot fi concatenate sau scindate în subliste.În practica programării listele apar în mod obişnuit în aplicaţii referitoare la regăsirea informaţiei, implementarea translatoarelor de programe, simulare etc.

TDA Listă

Din punct de vedere matematic, o listă este o secvenţă de zero sau mai multe elemente numite noduri aparţinând unui anumit tip numit tip de bază, care se reprezintă de regulă astfel : a1, a2,...,an Unde n ≥ 0 şi fiecare ai aparţine tipului de bază.

Numărul n al nodurilor se numeşte lungimea l istei. Presupunând că n ≥ 1, se spune că a1 est e primul nod al listei iar an est e ultimul nod.Dacă n = 0 avem de-a face cu o listă vidă.O proprietate importantă a unei liste este aceea că nodurile sale pot fi ordonate liniar funcţie de poziţia lor în cadrul listei.Se spune că ai precede pe ai+1 pentru i=1,2,...,n-1 şi că ai succede (urmează) lui ai-1 pentru i=2,3,4, ...,n. De regulă se spune că nodul ai se află pe poziţia i. Este de asemenea convenabil să se postuleze existenţa poziţiei următoare ultimului element al listei.În această idee se introduce funcţia FIN(L):TipPozitie care returnează poziţia următoare poziţiei n în l ista L având n elemente. Se observă că FIN(L) are o distanţă variabilă faţă de începutul listei, funcţie de faptul că lista creşte sau se reduce, în timp ce alte poziţii au o distanţă fixă faţă de începutul listei. Pentru a defini un tip de date abstract, în cazul de faţă TDA Listă. Pe lângă definirea din punct de vedere matematic a modelului asociat(mai sus precizată). Este necesar să se definească şi un set de operatori aplicabili obiectelor de tip l istă. Din păcate, pe de o parte este relativ greu de definit un set de operatori valabil în toate aplicaţiile, iar pe de altă parte natura setului depinde esenţial de maniera de implementare a listelor. În continuare se prezintă două seturi reprezentative de operatori care acţionează asupra listelor, unul restrâns şi altul extins.

Textul programului in limbajul „C”

head 2-3_6.h

typedef struct automobil

{

char den[40]; //denumirea automobilului

char model[40];//marca automobilului

char cul[40]; //Culoarea automobilului

int an; //Anul fabricarii

char cv[40]; //Cutie de viteze

float cc; //Capacitate cilindrica

struct automobil *next;

}automobil;

automobil *head;

int creat(int n);

void read();

void show(automobil *head_2);

int search(int s);

void modif(int m);

int lenght();

void swap(automobil *a,automobil *b);

void sort();

void freemem();

void add_after_id(int id);

void add_before_id(int id);

void add_to_end();

void del_auto(int id);

void divide(int l,automobil **head_2);

void join(automobil **head_2);

void save(char *fname);

void read_file(char *fname);

fun 2-3_6.cpp

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "Head 2-3_6.h"

//Functia de alocare dinamica a memoriei

int creat(int n){

int i;

automobil *c,*p;

for(i=0;i<n;i++){

c=(automobil*)malloc(sizeof(automobil));

if(c == NULL) return 0;

if(i == 0){

head=c;

p=c;

} else {

p->next=c;

p=c;

} }

p->next=NULL;

return 1.

Preview document

Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 1
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 2
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 3
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 4
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 5
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 6
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 7
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 8
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 9
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 10
Implementarea tipului de date abstract - lista simplu înlănțuită în C - Pagina 11

Conținut arhivă zip

  • Implementarea Tipului de Date Abstract - Lista Simplu Inlantuita in C
    • screenshots
      • lista.jpg
      • mainmenu.jpg
      • menu.jpg
    • AutoBD.txt
    • fun 2-3_6.cpp
    • Head 2-3_6.h
    • Implementarea Tipului de Date Abstract - Lista Simplu Inlantuita in C.docx
    • main 2-3_6.cpp
    • main 2-3_6.exe
    • temp.txt

Alții au mai descărcat și

Clase

Clasele reprezintă tipuri de data abstracte, asemănătoare structurilor, care încapsulează comportamentul şi datele asociate unei entităţi....

C++

Un prim exemplu de program C++: #include <iostream.h> void main { int a; cout << "Dati un numar\n"; cin >> a; cout << "Ati tastat numarul "...

Probleme C++ Rezolvate

Problema 1: cmmdc(a, b) #include<stdio.h> #include<conio.h> //algoritmul lui Euclid //cel mai mare divizor comun pentru doua numere strict...

Limbajul C++ fundamente - aplicații

PROBLEMA 1 Sa se verifice daca un numar intreg preluat de la terminal este prim. #include<iostream.h> #include<math.h> void main () { int n,...

Curs 1 - PHP

1. INTRODUCERE - Ce este PHP ? PHP este abrevierea de la PHP – Hypertext Preprocessor (similar cu GNU ce reprezinta abrevierea de la GNU’s Not...

Curs 2 - PHP

Variabila reprezinta un identificator la o locatie de memorie si se foloseste pentru stocarea, prelucrarea si stergerea datelor. Variabilele in...

Curs 3 - PHP

Cicluri si structuri repetitive in PHP Ciclurile (buclele) sunt folosite atunci cand dorim sa executam de mai multe ori un bloc (ex: parcurgerea...

Curs 4 - PHP

Functiile sunt portiuni de cod definite pentru a executa anumite sarcini. Functiile pot fi chemate de mai multe ori pe parcursul executiei unui...

Te-ar putea interesa și

Media aritmetică

Prezentarea tipului de date abstracte numit lista In domeniul calculatoarelor o lista inlantuita este una dintre structurile de date fundamentale...

Liste Dinamice

Programul principal este liste.pas , uniturile folosite pentru animatie si pagina cu cuprins sunt realizate cu -uniturile mouse, u_aa si u_buton si...

Structuri de Date și Algoritmi

1 Tema:Implimentarea tipului abstract de date.Tabloul de structuri. 2 Sarcina:De implimentat tipul abstract de date,tablou de structuri si de...

Structuri de Date și Algoritmi

1. Conceptul de dată În informatică, prin dată, se desemnează un model de reprezentare a informaţiei, model cu care se poate opera pentru a obţine...

Structuri de Date și Algoritmi

Lucrarea 1 Evaluarea si masurarea timpului de executie al unui algoritm 1.Definitia unui tip de date abstract - TDA Un TDA este un model...

Structuri de Date și Algoritmi

Se citesc m perechi de numere întregi (x,y) reprezentând extremitatile muchiilor unui graf neorientat cu n vârfuri si m muchii. Sa se verifice...

Structuri de Date și Alogoritmi

EXTENSII ALE LIMBAJULUI C++ A. Operaţii de intrare-ieşire specifice limbajului C++ I. Noţiuni teoretice Limbajul C++ furnizează o bibliotecă...

Algoritmi și Structuri de Date

1. ALGORITMI SI MODURI DE REPREZENTARE Prelucrarea datelor cu ajutorul calculatorului se realizeazã prin executia unor operatii simple...

Ai nevoie de altceva?