Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 4.065 pregleda

Najnovija ↓

funkcije za listu 30.01.2007. u 19:01 · pre 240 meseci #1
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.
Re: funkcije za listu 02.02.2007. u 00:11 · pre 240 meseci #2
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.
Re: funkcije za listu 02.02.2007. u 16:33 · pre 240 meseci #3
Kad unesem na kraj liste,pa kad pozovem funkciju za ispisivanje,kao da izleti iz nekakve petlje i ispisuje brojeve konstantno,nema kraja.....
Re: funkcije za listu 03.02.2007. u 00:43 · pre 240 meseci #4
Postavi ceo kod ovde. Čini mi se da ne vidim funkciju za ispis liste.
Re: funkcije za listu 03.02.2007. u 10:25 · pre 240 meseci #5
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....
Re: funkcije za listu 04.02.2007. u 20:13 · pre 240 meseci #6
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.
Potpis
Sendvic uvek pada na namazanu stranu!
Re: funkcije za listu 05.02.2007. u 10:19 · pre 240 meseci #7
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...
Re: funkcije za listu 05.02.2007. u 13:26 · pre 240 meseci #8
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;
Potpis
Sendvic uvek pada na namazanu stranu!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme