Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

funkcije za listu

[es] :: C++ programiranje :: funkcije za listu

[ Pregleda: 618 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_shame_

Član broj: 71683
Poruke: 40
*.PPPoE-1288.sa.bih.net.ba.



Profil

icon funkcije za listu30.01.2007. u 18:01

Code:
#include<iostream.h>
struct cvor {
  int broj;
  cvor *sljedeci;
};
struct cvor *inicvor (int vrijednost){
  struct cvor *pokcvor;
  pokcvor = new cvor;
  if (pokcvor == NULL)
  return NULL;
  else {
    pokcvor->broj=vrijednost;
    return pokcvor;
    }
}
cvor *glava=NULL;
cvor *rep=NULL;

void dodajnapocetak (struct cvor *novi){
  if (glava==NULL){
    glava=novi;
    rep=novi;
    glava->sljedeci=NULL;
    }
    else {
      novi->sljedeci=glava;
      glava=novi;
      }
}

void brisicvor (struct cvor *brisi) {
  struct cvor *priv , *prije;
  priv=brisi;
  prije=glava;
  if (priv==prije)
  glava=glava->sljedeci;
  if (rep==priv){
    rep=rep->sljedeci;
    delete priv;
  }
  else {
    while (prije->sljedeci != priv )
    prije=prije->sljedeci;
    prije->sljedeci=priv->sljedeci;
    if (rep==priv){
      rep=prije;
      delete prije;
      }
  }
}
int main () {
  cvor *pok;
  int a=1;
  int unos;
  while (a!=0){
    cout<<"************MENU*****************"<<endl;
    cout<<"\t1. DODAJ NA POCETAK"<<endl;
    cout<<"\t2. BRISI PRVI"<<endl;
    cout<<"\t0. IZLAZ"<<endl;
    cout<<"*********************************";
    cout<<"\nUnesi opciju: ";
    cin>>a;
    switch (a){

      case 1:
      cout<<"Unesi cjelobrojni element: ";
      cin>>unos;
      pok=inicvor(unos);
      dodajnapocetak(pok);
      break;

      break;


      case 2:
      brisicvor (glava);
      break;

      case 0:
      break;
      }
    }
    return 0;
}


Kako da napravim na slican nacin postavljanje na kraj liste i brisanje sa kraja liste?
Unapred hvala.
30.01.2007. u 18:01 

S_3_ka
Nebojša Stričević
Sombor - Novi Sad

Član broj: 48863
Poruke: 22
217.24.27.*



Profil

icon Re: funkcije za listu01.02.2007. u 23:11
void dodajNaKraj (struct cvor *novi){
if (glava==NULL){
glava=novi;
rep=novi;
glava->sljedeci=NULL;
}
else {
rep->sljedeci=novi;
rep=novi;
}
}

void brisiSaKraja(){ brisicvor (rep); }

Nisam gledao tvoj kod detaljno, ali mislim da bi ovako trebalo da radi.
"Kakav je to čovek koji ne čini svet boljim?"
01.02.2007. u 23:11 

_shame_

Član broj: 71683
Poruke: 40
*.PPPoE-873.sa.bih.net.ba.



Profil

icon Re: funkcije za listu02.02.2007. u 15:33
Kad unesem na kraj liste,pa kad pozovem funkciju za ispisivanje,kao da izleti iz nekakve petlje i ispisuje brojeve konstantno,nema kraja.....
02.02.2007. u 15:33 

S_3_ka
Nebojša Stričević
Sombor - Novi Sad

Član broj: 48863
Poruke: 22
217.24.27.*



Profil

icon Re: funkcije za listu02.02.2007. u 23:43
Postavi ceo kod ovde. Čini mi se da ne vidim funkciju za ispis liste.
"Kakav je to čovek koji ne čini svet boljim?"
02.02.2007. u 23:43 

_shame_

Član broj: 71683
Poruke: 40
*.PPPoE-5298.sa.bih.net.ba.



Profil

icon Re: funkcije za listu03.02.2007. u 09:25
Evo ovaj kod:


Code:
#include<iostream.h>
struct cvor {
  int broj;
  cvor *sljedeci;
};
struct cvor *inicvor (int vrijednost){
  struct cvor *pokcvor;
  pokcvor = new cvor;
  if (pokcvor == NULL)
  return NULL;
  else {
    pokcvor->broj=vrijednost;
    return pokcvor;
    }
}

void pisi(cvor* pok){
  while(pok){
    cout<<" "<<pok->br;
    pok=pok->sljedeci;
  }
}
cvor *glava=NULL;
cvor *rep=NULL;

void dodajnapocetak (struct cvor *novi){
  if (glava==NULL){
    glava=novi;
    rep=novi;
    glava->sljedeci=NULL;
    }
    else {
      novi->sljedeci=glava;
      glava=novi;
      }
}

void brisicvor (struct cvor *brisi) {
  struct cvor *priv , *prije;
  priv=brisi;
  prije=glava;
  if (priv==prije)
  glava=glava->sljedeci;
  if (rep==priv){
    rep=rep->sljedeci;
    delete priv;
  }
  else {
    while (prije->sljedeci != priv )
    prije=prije->sljedeci;
    prije->sljedeci=priv->sljedeci;
    if (rep==priv){
      rep=prije;
      delete prije;
      }
  }
}
int main () {
  cvor *pok;
  int a=1;
  int unos;
  while (a!=0){
    cout<<"************MENU*****************"<<endl;
    cout<<"\t1. DODAJ NA POCETAK"<<endl;
    cout<<"\t2. BRISI PRVI"<<endl;
    cout<<"\t3. Ispisi listu"<<endl;
    cout<<"\t0. IZLAZ"<<endl;
    cout<<"*********************************";
    cout<<"\nUnesi opciju: ";
    cin>>a;
    switch (a){

      case 1:
      cout<<"Unesi cjelobrojni element: ";
      cin>>unos;
      pok=inicvor(unos);
      dodajnapocetak(pok);
      break;

      break;


      case 2:
      brisicvor (glava);
      break;
      
       case 3:
      cout<<"\nLista: \n";
      pisi(pok);
      break;

      case 0:
      break;
      }
    }
    return 0;
}


Ali sad cu ti objasniti sta meni ustvari treba....
U uvo kodu ispod,je problem uradjen sa pokazivacima na pokazivace....kako to uraditi samo sa jednostrukim pokazivacima....
Prikačeni fajlovi
03.02.2007. u 09:25 

PeraKojotSuperGenije
Sasa Popovic
Beograd

Član broj: 44507
Poruke: 125
*.233.eunet.yu.



Profil

icon Re: funkcije za listu04.02.2007. u 19:13
Pa ti ovde nemas DodajNaKraj... Kada dodajes na kraj treba na pazis da ti u tom poslednjem elementu pokazivac na sledeci pokazuje na nil! Da bi mogao efikasno da dodajes na kraj liste treba da imas jedan pokazivac koji ce stalno da pokazije na poslednji element liste. I kad kod dodajes na kraj liste taj pokazivac treba da azuriras, kao sto azuriras pokazivac na pocetak kad dodajes na pocetak.
Sendvic uvek pada na namazanu stranu!
04.02.2007. u 19:13 

_shame_

Član broj: 71683
Poruke: 40
*.PPPoE-5474.sa.bih.net.ba.



Profil

icon Re: funkcije za listu05.02.2007. u 09:19
Imam u prikacenim fajlovima program uradjen sa pokazivacima preko pokazivaca,a meni samo sa pokazivacima treba....
A f-ja koja postavlja element na kraj mi ne radi kada ima 2 ili vise elemenata...
05.02.2007. u 09:19 

PeraKojotSuperGenije
Sasa Popovic
Beograd

Član broj: 44507
Poruke: 125
*.84.eunet.yu.



Profil

icon Re: funkcije za listu05.02.2007. u 12:26
Ne mogu sad da gledam taj kod...

p je pokazivac na poslednji element u tvojoj listi (koji ili imas ili ga dobijes prolaskom kroz listu)
p->sledeci je jednako nil jer je p poslednji pa njegov sledeci ne postoji

treba x da ubacis u listu a novi je tipa cvor...
Code:

novi = new cvor;
novi->broj = x;
novi->sledeci = 0;
p->sledeci = novi;
p = novi;

Sendvic uvek pada na namazanu stranu!
05.02.2007. u 12:26 

[es] :: C++ programiranje :: funkcije za listu

[ Pregleda: 618 | Odgovora: 7 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.