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

funkcije za listu

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

[ Pregleda: 2902 | Odgovora: 7 ] > FB > Twit

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 - pre 209 meseci
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.
 
Odgovor na temu

S_3_ka

Član broj: 48863
Poruke: 22
217.24.27.*



Profil

icon Re: funkcije za listu01.02.2007. u 23:11 - pre 209 meseci
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.
 
Odgovor na temu

_shame_

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



Profil

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

S_3_ka

Član broj: 48863
Poruke: 22
217.24.27.*



Profil

icon Re: funkcije za listu02.02.2007. u 23:43 - pre 209 meseci
Postavi ceo kod ovde. Čini mi se da ne vidim funkciju za ispis liste.
 
Odgovor na temu

_shame_

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



Profil

icon Re: funkcije za listu03.02.2007. u 09:25 - pre 209 meseci
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
 
Odgovor na temu

PeraKojotSuperGenije
Sasa Popovic
Beograd

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



Profil

icon Re: funkcije za listu04.02.2007. u 19:13 - pre 209 meseci
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!
 
Odgovor na temu

_shame_

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



Profil

icon Re: funkcije za listu05.02.2007. u 09:19 - pre 209 meseci
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...
 
Odgovor na temu

PeraKojotSuperGenije
Sasa Popovic
Beograd

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



Profil

icon Re: funkcije za listu05.02.2007. u 12:26 - pre 209 meseci
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!
 
Odgovor na temu

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

[ Pregleda: 2902 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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