Jednostruko povezane liste

Jedan oblik organizacije dinamičkog čuvanja podataka je jednostruko povezana lista. Lista prestavlja skup čvorova, elemenata, povezani pokazivačima u jednom smeru. Svaki čvor je strukturna promenljiva koja ima najmanje dva polja: jedno za čuvanje podataka, ili informacija o čuvanju podataka,  drugo za čuvanje pokazivača na sledećeg čvora liste.

Deklaracija jednostruko povezanih lista

struct cvor
{
char inf;
struct cvor *sledeci;
};
struct cvor *pocetak_liste;

lista1

Na početak liste pokazuje pokazivačka promenljiva početak_liste. Krajnji čvor liste u elementu za vezu (sledeći) sadrži vrednost NULL. Ako je lista prazna početak_liste takođe, ima vrednost NULL.

Formiranje jednostruke liste

Da bi formirali listu, prvo inicijaliziramo praznu listu dodelom

pocetak_liste=NULL;      

pocetakliste

Kako bi se kreirao prvi dinamički objekat (čvor liste), neophodno je da se dodeli memorijski prostor,
novi=new cvor;, gde je novi pokazivač na strukturu cvor  lista2

Dinamičkom objektu novi, mogu se dodeliti vrednosti
novi→inf= „A“;
novi→ sledeci=pocetak_liste; lista3.PNG

Da bi promenljiva pocetak_liste pokazivala na početak, treba joj dodeliti vrednost promenljivve novi, pocetak_liste=novi; 

lista5.PNG

Prostor za novi cvor liste se odvaja operatorom novi=new cvor;

lista4

Nakon novi→inf=“B“;
            novi→sledeci=pocetak_liste; Informacioni deo čvora dobija vrednost, uključuje se u  listu i to na njen početak lista 6

Da bi promenljiva pocetak_liste pokazivala na početak, ponavlja se dodela pocetak_liste=novi;

 lista7

Pr.1 
Formirati i ispisati jednostruko spregnutu listu?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;
/* Definicija cvora liste*/
struct cvor
{
char pod;
cvor* sledeci;
};
/*Funkcija za ispis liste*/
void ispis(cvor *tekuci)
{
while(tekuci!=NULL)
{
cout<<tekuci->pod<<;
tekuci=tekuci->sledeci;
}
return;
}

int main(int argc, char *argv[])
{
char ceo;
cvor *pocetni, *novi;
pocetni=NULL;
cout<<„Unesi sadrzaj liste“<<endl;
cout<<endl;
while ((ceo=getchar())!=’ ‘)
{
novi= new cvor;
novi->pod=ceo;
novi->sledeci=pocetni;
pocetni=novi;

}
ispis(pocetni);

system(„PAUSE“);
return EXIT_SUCCESS;
}

Pr. 2
Kreiraj i ispisi jednostruko spregnutu listu ciji elementi su celi brojevi?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;
/* Definicija cvora liste*/
struct cvor
{
int pod;
cvor* sledeci;
};
/*Funkcija za ispis liste*/
void ispis(cvor *tekuci)
{
while(tekuci!=NULL)
{
cout<<tekuci->pod<<endl;
tekuci=tekuci->sledeci;
}
return;
}

int main(int argc, char *argv[])
{
int ceo;
cvor *pocetni, *novi;
pocetni=NULL;
cout<<„Unesi sadrzaj liste“<<endl;
cout<<endl;
while (ceo!=9999)
{
cout<<„Unesi ceo broj kao element liste“<<endl;
cout<<„Za kraj unesi 9999″<<endl;
cin>>ceo;
if (ceo!=9999)
{
novi= new cvor;
novi->pod=ceo;
novi->sledeci=pocetni;
pocetni=novi;
cout<<endl;
}
}
ispis(pocetni);
system(„PAUSE“);
return EXIT_SUCCESS;
}

 

Pr.
Kreiraj jednostruko spregnutu listu pri čemu novi čvor se ubacuje na kraj liste?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;
/* definicija strukturnog podatka cvor*/
struct cvor
{
char inf;
struct cvor *sledeci;
};
void pisi (cvor *tekuci)
{
while (tekuci!=NULL)
{
cout<<tekuci->inf<<endl;
tekuci=tekuci->sledeci;
}
return ;
}
int main(int argc, char *argv[])
{
cvor *novi;
cvor *pocl=NULL;
cvor *krajl=NULL;
char ch;
cout<<„Ünesi sadryaj liste“<<endl;
while ((ch=getchar())!=’ ‘)
{
novi= new cvor;
novi->inf=ch;
if(pocl==NULL)
{
pocl=novi;
}
else
{
krajl->sledeci=NULL;
}
krajl=novi;
krajl->sledeci=NULL;
cout<<„Sadrzaj liste“<<endl;
pisi(pocl);
}

system(„PAUSE“);
return EXIT_SUCCESS;
}

 

 

 

Dropbox

Рачунари и програмирање

Дропбокс – мој фаворит.
Дропбокс је мрежни сервис за синхронизацију датотека (фајлова) између више уређаја (истог корисника!): кућни рачунар, рачунар на послу, таблет, паметни телефон…
То је складиште на мрежи у које се пакују фајлови којима корисник може приступити са било ког места: или преко претраживача (фајерфокс, хром…) или преко инсталираног програма, који сам обавља синхронизацију! Подршка је одлична за све системе: линукс, виндовс, андроид…  Бесплатан је и нуди 2GB простора. Тај простор се може повећати до 5GB, позивањем пријатеља да користе дропбокс. Уз доплату од 9,99$ месечно добија се 1ТB!

View original post 680 more words

Datoteke-upis/čitanje

Pr 1.

Kreiraj tekstualnu datoteku čiji sadržaj su brojevi od 1 do 10?

Rešenje:

#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char** argv)
{
int i;
ofstream izlaz(„brojevi.txt“);
for (i=1;i<=10;i++)
izlaz<<i<<endl;
return 0;
}

Primer 2.

Kreiraj datoteku koja sadrži brojeve od 1 do 10 koristeći metod open()?

Rešenje:

#include <iostream>
#include <fstream>
using namespace std;

/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */

int main(int argc, char** argv)
{
int i;
ofstream izlaz;
izlaz.open(„brojevi.txt“);
for (i=1;i<=10;i++)
izlaz<<i;
izlaz.close();
for (i=1;i<=10;i++)
izlaz<<i<<endl;

return 0;
}

Primer 3.

Napravite program koji u datoteku Kvadrat.txt unosi kvadrate brojeva od 1 do 10?

Rešenje:

#include <iostream>
#include <fstream>
using namespace std;

/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */

int main(int argc, char** argv)
{
int i;
ofstream izlaz;
izlaz.open(„kvadrati.txt“);
for (i=1;i<=10;i++)
izlaz<<i*i<<endl;;
izlaz.close();
return 0;

Primer 4.

Na predhodno kreiranu  datoteku, dodaj kvadrate brojeva pd 10 do 20?

Rešenje:

#include <iostream>
#include <fstream>
using namespace std;

/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */

int main(int argc, char** argv)
{
ofstream izlaz;
izlaz.open(„kvadrati.txt“);
for (int i=11;i<=100;i++)
izlaz<<i*i<<endl;;
izlaz.close();

return 0;
}

Primer 5.

Napravite program koji popunjava datoteku sa vašim imenima i prezimenima i prosečna ocena iz računare i programiranje 2?

Rešenje:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */

int main(int argc, char** argv)
{
int i, n;
string ime;
string prezime;
float ocena;
ofstream izlaz;
izlaz.open(„MTKK31.txt“);
cout<<“ Unesi broj u;enika u odelenju“<<endl;
cin>>n;
for (i=1;i<=n;i++)
{
cout<<„unesi ime ucenika br“<<i<<endl;
cin>> ime;

cout<<„unesi prezime ucenika br“<<i<<endl;
cin>> prezime;
cout<<„unesi prosecnu ocenu za ucenika br „<<i<<endl;
cin>> ocena;
izlaz<<ime<<prezime<<ocena<<endl;
}
izlaz.close();
return 0;
}

Video-citanje iz datoteke

Primer 6:

Napravite program koji izračunava srednju ocenu iz predmeta računari i programiranje na nivou rayreda?

Rešenje:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */

int main(int argc, char** argv)
{
ifstream cita;
cita.open(„Mtkk31.txt“);
string ime, prezime;
float ocena, socena;
int br=0;
while(cita>> ime>>prezime>>ocena)
{
br++;
socena+=ocena;
cout<<ime<<prezime<<ocena<<endl;
}

cita.close();
socena=socena/br;
cout<< „srednja ocena za Mtkk11 je“ <<socena<<endl;

return 0;
}

Napomena: Datoteka je formirana sa predhodnim zadatkom

Primer 6.

Napravite program koji kreira datoteku čiji je sadržaj  su imena i prezimena učenika i njihova visina i težina; Izračunaj prosečnu visinu i težinu u razredu?

Rešenje: