Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Länkad lista, Kopierings-Konstruktorn

Postades av 2005-01-13 11:56:04 - Tom Omvik, i forum c++, Tråden har 4 Kommentarer och lästs av 1057 personer

Hej igen!

Skulle ni kunna hjälpa mig med en liiiten pytte sak, nämligen Kopieringskonstruktorn till en LÄNKAD LISTA.

Jag har fått den att skapa ett listobjekt och kopiera första noden.
Men sen tar det stop.
Jag märker att den går in i for-loopen och klarar av att kopiera nod nr 2, men sedan vet jag inte vad jag gör för fel, när jag ska försöka stoppa in nod nr 2 längst bak i nya listan.

Så här har jag tänkt ut hur länkade listan skapas första gången:

Användaren skriver in 123 på tangentbordet.
List objektet skapas och stoppar in tal för tal i länkade listan bakvänt, dvs
tal 1=första noden, tal 2=andra noden (som hoppar in mellan last & nod 1) och tal 3=sist skapade noden i listan (som hoppar in mellan last & nod 2).
Vilket blir att listan får detta utseende: [1]<-[2]<-[3]<-(*last), då *last är pekare till första noden i listan och (*last) är list objektet, dvs ett klassobjekt som innehåller/pekar på struct noder.

Gå in på denna länk och ladda ner BigInt.zip (ta bort .gif) och se hur jag gjort/försökt:
http://f1.pg.briefcase.yahoo.com/bc/tombolo_omvik/lst?.dir=/Kompisar/CPP&.order=&.view=l&.src=bc&.done=http%3a//f1.pg.briefcase.yahoo.com/

Det ser så enkelt ut att kopiera min länkade lista. Man ska ju bara behöva stega framåt i båda listorna och kopiera nod för nod, men som sagt, jag kommer inte på hur man stegar framåt i den nya listan och stoppar in de nya noderna längst bak i den nya listan.

Jag hoppas att det är bara pekarna som pekar fel.


Svara

Sv: Länkad lista, Kopierings-Konstruktorn

Postades av 2005-01-13 13:35:51 - Niklas Jansson

Om det är C++ det är frågan om är det vettigaste att helt enkelt använda den inbyggda "list". Ligger i #include-filen <list>.

Annars är principen nästan alltid att använda rekursion för länkade listor.

I princip följande (halvpseudokod) :

void Kopiera(Nod1, Nod2)
{
Nod1.värde=Nod2.värde;
if(Nod2.barn != 0)
Kopiera(Nod1.barn, Nod2.barn);
}


Svara

Sv:Länkad lista, Kopierings-Konstruktorn

Postades av 2005-01-13 22:00:22 - Martin Adrian

>Annars är principen nästan alltid att använda rekursion för länkade listor.

Nja, svansrekursion brukar man väl byta ut mot vanlig iteration?

void Kopiera(Nod1, Nod2)
{
do {
Nod1->värde=Nod2->värde;
Nod1 = Nod1.barn; Nod2 = Nod2.barn;
}
while (Nod2)
}


Svara

Sv: Länkad lista, Kopierings-Konstruktorn

Postades av 2005-01-14 13:22:18 - Tom Omvik

Jaa ja ja ja, det vet jag ju hur man gör, kopierar.

Men kopierings-konstruktorn ska ju inte bara kopiera, utan den måste också skapa en ny lista + alla nya noder som sedan ska stoppas in i nya listan.

Jag kan skapa och kopiera första noden, men de övriga noderna kan jag sedan inte stoppa in i listan. (längst bak). Det är problemet. Har lite problem med pekarna i for() loopen, som sagt.

PS: Använda biblioteket <list> får jag inte göra för läraren, utan jag måste skapa mig en egen lista från grunden.

Så här ser min Kopierings-Konstruktor ut:
<C++ kod>
BigInt::BigInt(const BigInt &bi)
{
last=NULL;
count=0;
int bisize=bi.count;
int i=0;
Node *p=new Node;
Node *pbi=new Node;

pbi->next=bi.last;
pbi=pbi->next;
Node *newnode=MakeBigIntNode(pbi->digit);
newnode->next=last;
last=newnode;
p->next=newnode;
count++; //antal noder i listan

for(i=1; i<bisize; i++)
{
pbi=pbi->next;
Node *newnode=MakeBigIntNode(pbi->digit);
newnode->next=p->next;
p->next=newnode;
count++;
//p=p->next;
}

delete p;
delete pbi;
}


Svara

Sv:Länkad lista, Kopierings-Konstruktorn

Postades av 2005-01-14 23:06:55 - Martin Adrian

BigInt::BigInt(const BigInt &bi) : last(NULL), count(0) {
  if (bi.last) {
    last = MakeBigIntNode(bi.last->digit);
    count = 1;
    for (Node* itr = bi.last->next, *newitr = last; itr; itr = itr->next, count +=1)
      newitr = newitr->next = MakeBigIntNode(itr->digit);
  }
}


Svara

Nyligen

  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 879
27 965
271 774
716
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies