3URJUDPE\JJQDGVNRQVWHQV HOHPHQW $EVWUDNWDGDWDW\SHURFK 'DWDVWUXNWXUHU $EVWUDNWDGDWDW\SHU +HOWDO/LVWD6WDFN. 7DEHOO

Relevanta dokument
'\QDPLVNELQGQLQJ. 3RO\PRUILQnJUD EHJUHSS. 3RO\PRUIL ² (Q YLVV NRQVWUXNWLRQ NDQ H[HNYHUDV Sn ROLND VlWW

OKIFAX hjälpguide

1. Klass med en dynamiskt allokerad variabel, definitionsfilen-del Klass med en dynamiskt allokerad variabel, inkluderingsfilen.

FINLANDS FÖRFATTNINGSSAMLINGS FÖRDRAGSSERIE ÖVERENSKOMMELSER MED FRÄMMANDE MAKTER


Börja med at t st art a programmet Word. menyfält et. välj däreft er at t klicka på %LOGREMHNW och vidare på :RUG$UW. Tillbaka.


Pdf- filer kräver et t hjälpprogram som het er Adobe Acrobat Reader. Acrobat Reader är en grat is programvara som du kan hämt a på den här sidan.

Jokkmokkskortet. Fiska i Norrbottens fjällvatten. Välkommen till Norrbottensfjällen! Fiska i Jokkmokk

Kirunakortet. Fiska i Norrbottens fjällvatten. Fiska i Kiruna. Välkommen till Norrbottensfjällen!

Tommy Färnqvist, IDA, Linköpings universitet

- från idé 2ll produkt

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

,QI UDQGHW DY HXURQ NRPPLVVLRQHQ UHGRJ U LQJnHQGH I U I UEHUHGHOVHUQD RFK I UHVOnU WMXJR

Uppdraget. Växtstrategi för den lilla staden ² GHW ÀQQV UHFHSW. rubriker enligt programmets uppdragsbeskrivning:

Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

Tillämpad programmering

SWE ANVÄNDARHANDBOK. Batteri Pellenc-verktyg 1200 / 1500

IT-INFRASTRUKTURPROGRAM FÖR FALKENBERGS KOMMUN

2 Modul 2 - (Länkade) Listor

TDIU01 Programmering i C++

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

69()2V IRWRXWIO\NW WLOO V GUD 'DODUQD GHQ VHSWHPEHU

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Föreläsning 3. Stack

Nya LTS-högtalaren är på G!

bu YLOMDQ DWW VNDSD VXQGD RIIHQWOLJD ILQDQVHU WLOOUlFNOLJWVWDUNL(XURSD"

maxlist-1. Indexerad lista Länkad lista

Text och foto: Erik Söderholm.

DOM Meddelad i Stockholm

Stack, specifikation. Stack och Kö. Y s t M A p. Stack. <== > Y s t M A p <== > Prioritetskö

TDIU01 - Programmering i C++, grundkurs

Föreläsning 3. Stack

Länkade strukturer. (del 2)

Programsystemkonstruktion med C++

Fiska i Norrbottens fjällvatten. Välkommen till Norrbottensfjällen! Fiska i Arjeplog. Arjeplogskortet

+LVWRULHQ. .XUVLQQHKnOO 2EMHNWRULHQWHUDGSURJUDPXWYHFNOLQJ ª 2EMHNWRULHQWHUDGDQDO\V ª 2EMHNWRULHQWHUDGGHVLJQ ª 2EMHNWRULHQWHUDGSURJUDPPHULQJ

FINLANDS FÖRFATTNINGSSAMLINGS FÖRDRAGSSERIE ÖVERENSKOMMELSER MED FRÄMMANDE MAKTER

TDIU01 - Datortenta (DAT2)

Prislista & Produktinformation

Övningstentamen, akustikdelen i MTC947, HT2004

Kurskod D0010E Datum Skrivtid 5tim

Grattis Yvonne Augustin

Funktionens deklaration

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

FINLANDS FÖRFATTNINGSSAMLING

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

TENTAMEN: Objektorienterad programutveckling. Läs detta! Skriv ditt namn och personnummer på varje blad (så att vi inte slarvar bort dem).

Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Behovsanalys och markanspråk

2.7$*21(1. +DQGOHGQLQJ I U WLOOlPSQLQJ Sn HQVNLOGD RUJDQLVDWLRQHU. (1 0(72' )g5.$3$&,7(76%('g01,1* 3HWHU :LQDL $QGHUV,QJHOVWDP -XQL 5334

Rapport Biogas till fordonsgas i Umeåregionen en förstudie

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

0,/-g%,/' $QYLVQLQJDUI UVPnKXVE\JJDUHL6LEER

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

Reinfeldt hycklar om vården

Ökänt nervgift som fyllt många tomrum

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Avstyckning pågår från stamfastigheten Ljungby Löckna 2.1. Tomtens areal uppskattas bli ca m².

Nya Karolinska huvudentré Skuggskissförslag som en del av kursen Going public, Konstfack 2015

Föreläsning Datastrukturer (DAT036)

.RPPLVVLRQHQEHVOXWDURPHQRPIDWWDQGHUHIRUPDY NRQNXUUHQVUHJOHUQDI UELOI UVlOMQLQJRFKELOVHUYLFH

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.

2. CV Annika Vilhelmson. Filipstadsbacken Farsta Tel:

TDDC76 - Programmering och Datastrukturer

Kampen om döttrarna INDIENS OÖNSKADE DÖTTRAR 2 TEXT & FOTO: STINA LINDE

Linköpings universitet, Linköping, juni 2006

Föreläsning Datastrukturer (DAT036)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Fasadbelysning i Stockholm. I samarbete med

Melbye kompositmast. Framtidens lösning idag. Melbye kompositmaster på licens från

Datastrukturer. föreläsning 3. Stacks 1

FE-rapport Dynamisk sammanhållning. kommunikation i kulturprojektet Röda Sten. Ewa Wikström

Djup/ytlig kopiering av containrar med referensobjekt. Allmänt. Vad ska container innehålla?

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Högskolan Dalarna sid 1 av 5 Data-sektionen Hans-Edy Mårtensson

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

1 Namnkontroll (NameControl)

Grisbäckens avrinningsområde

Abstrakta datastrukturer

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Trädtraversering. Binärt träd. Trädtraversering djupet-först. Trädtraversering bredden-först

EUROPEISKA GEMENSKAPERNAS KOMMISSION. Ändrat förslag till. 5c'(765(.200(1'$7,21 RPEDUQVRFKXQJGRPDUVDONRKRONRQVXPWLRQ

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

(8523$3$5/$0(17(7 69$5. IUnQ /R\RODGH3DODFLR. 120,1(5$'.200,66,216/('$027 2&+9,&(25')g5$1'( 5(/$7,21(51$0('(8523$3$5/$0(17(7 75$ &+(1(5*,

Tentamen Datastrukturer (DAT036)

Programmering i C++ EDA623 Containerklasser och algoritmbibliotek. EDA623 (Föreläsning 10) HT / 33

TDDC76 - Programmering och Datastrukturer

2D1387, Programsystemkonstruktion med C++ 01/02 1

Exempel ( )

Datastrukturer och algoritmer

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 4 Innehåll

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Transkript:

$EVWUDNWDGDWDW\SHURFK 'DWDVWUXNWXUHU Dstr - 1 3URJUDPE\JJQDGVNRQVWHQV HOHPHQW Dstr - 2 $EVWUDNWDGDWDW\SHU +HOWDO/LVWD6WDFN. 7DEHOO $OJRULWPHU 6 NQLQJVRUWHULQJWUDYHUVHULQJ.RQWUROOVWUXNWXUHU IRULIZKLOH 1

'DWDW\SHQ Dstr - 3 'DWDW\SHQ $QYlQGDUH VSHFLILNDWLRQ LPSOHPHQWDWLRQ Dstr - 4 'DWD ElU LQIRUPDWLRQ JHQRP DWW UHSUHVHQWHUD QnJRW ² 'DWDREMHNWHW µ/xqfk PHOODQ RFK µ DY W\SHQ WH[W NDQ LQIRUPHUD RP DWW DIIlUHQ lu VWlQJG JHQRP DWW UHSUHVHQWHUD DWW GH VRP DUEHWDU GlU lwhu OXQFK PHOODQ NORFNDQ RFK ² 'DWDW\S ² (Q GDWDW\S lu HQ W\S DY GDWD $QYlQGDUHQ $QYlQGDUHQ lu EHJUlQVDG WLOO DWW DQYlQGD GDWDW\SHQ L HQOLJKHW PHG GHVV VSHFLILNDWLRQ 'DWDW\S REMHNW RSHUDWRUHU ² 7LOO GDWDW\SHQ KHOWDO K U LQWH HQGDVW GH HQVNLOGD KHOWDOHQ XWDQ RFNVn IXQNWLRQHU VRP DGGLWLRQ RFK VXEVWUDNWLRQ UHODWLRQHU VRP PLQGUH lq RFK VW UUH lq RVY $EVWUDNW GDWDW\S ² (Q WHUP VRP DQYlQGV QlU PDQ YLOO EHVNULYD GLVNXWHUD HOOHU DQYlQGD HQ GDWDW\S XWDQ DWW WD QnJUD KlQV\Q WLOO YDUH VLJ RP HOOHU KXU GHQ lu UHDOLVHUDG L SURJUDPVSUnNHW RFK KnUGYDUDQ 8SSPlUNVDPKHWHQ NRQFHQWUHUDV Sn YDG RSHUDWLRQHUQD J U RFK YLOND UHVXOWDW GH JHU 6SHFLILNDWLRQHQ EHVNULYHU JUlQV\WDQ WLOO GDWDW\SHQV LPSOHPHQWHULQJ,PSOHPHQWDWLRQHQ DY GDWDW\SHQ lu GROG I U DQYlQGDUHQ 2

Dstr - 5 Dstr - 6 ) UVODJWLOOVSHFLILNDWLRQ push() pop() SRS 2P VWDFNHQ lu WRP UHWXUQHUDU IXQNWLRQ SRS QROO, DQQDW IDOO UHWXUQHUDU IXQNWLRQHQ GHW YlUGH VRP I UHNRPPHU L WRSSHQ DY VWDFNHQ RFK QlVWD YlUGH L VWDFNHQ NRPPHU DWW EOL VWDFNHQV WRSS SXVK )XQNWLRQHQ SXVK DQURSDV PHG HQ SDUDPHWHU VRP KDU GHW YlUGH VRP VND SODFHUDV OlQJVW XSS L VWDFNHQ 6WDFNHQV WRSS NRPPHU GlUHIWHU DWW EHVWn DY GHWWD Q\D YlUGH HPSW\ )XQNWLRQHQ HPSW\ UHWXUQHUDU WUXH RP VWDFNHQ lu WRP L DQQDW IDOO UHWXUQHUDU IXQNWLRQHQ IDOVH 3

Dstr - 7 Dstr - 8 ) UVODJWLOOJUlQV\WD ) UVODJWLOOHQLPSOHPHQWDWLRQ class Stack public: Stack(); virtual ~Stack(); //Konstruktor //Destruktor push(7); push(5); top 0 top 1 top 2 TYPE pop(); void push(type item); //Tar bort elementet i stackens //topp. //Lägger in ett nytt element i //stackens topp bool empty(void)const; //Sann om stacken är tom private: //DET HÄR ÄR INGET FÖR ANVÄNDAREN AV STACK!!! TYPE *data; int top; ; data [0] [1] [2] [3] [4] [5] Z / &? # data [0] [1] [2] [3] [4] [5] 7 / &? # data [0] [1] [2] [3] [4] [5] 5 7 &? # [9999] [10000] a a [9999] [10000] a a [9999] [10000] a a 4

Dstr - 9 Dstr - 10 ) UVODJWLOOHQLPSOHPHQWDWLRQ ([HPSHOSnDQYlQGQLQJ Stack<TYPE>::Stack(void) top = 0; data = new TYPE[10000]; Stack<TYPE>::~Stack(void) delete [] data; TYPE Stack<TYPE>::pop(void) if (!empty()) return data[--top]; else return 0; void Stack<TYPE>::push(TYPE item) data[top++] = item; bool Stack<TYPE>::empty(void)const return (top > 0)? false : true; #include <iostream.h> #include "stack.h" int main(void) cout <<"Skriv några tal så räknar jag upp dom!" <<endl; cout << "Bryt inmatningen med noll." << endl; cout << endl; Stack<double> stacken; int nr = 1; double tal = -1.0; cout << "Tal "<< nr++ << " =>: "; cin >> tal; while (tal!=0.0) stacken.push(tal); cout << "Tal "<< nr++ << " =>: "; cin >> tal; cout <<endl <<"Nu skriver jag ut talen!" <<endl <<endl; while (!stacken.empty()) cout << stacken.pop() << '\t'; cout << endl << endl; cout << "Det var alla tal i omvänd ordning!" << endl; return 0; 5

Dstr - 11 Dstr - 12 6DPPDJUlQV\WDPRWDQYlQGDUHQ 0HQHQKHOWDQQDQ LPSOHPHQWDWLRQ class Stack public: Stack(); virtual ~Stack(); TYPE pop(); void push(type item); //Konstruktor //Destruktor //Tar bort elementet i stackens //topp. //Lägger in ett nytt element i //stackens topp push(7); top push(5); top 5 bool empty(void)const; //Sann om stacken är tom private: //DET HÄR ÄR INGET FÖR ANVÄNDAREN AV STACK!!! Node<TYPE> *top; ; top 7 7 6

Dstr - 13 Dstr - 14 (QKHOWDQQDQLPSOHPHQWDWLRQGHO //*Node********************************************** class Node friend class Stack<TYPE>; private: Node(TYPE item, Node* nextnode = 0); TYPE data; Node *next; ; //*************************************************** //-Node---------------------------------------------- Node<TYPE>::Node(TYPE item, Node* nextnode) data = item; next = nextnode; - (QKHOWDQQDQLPSOHPHQWDWLRQGHO //-Stack--------------------------------------------- Stack<TYPE>::Stack(void) top = 0; //-~Stack------------------------------------------- Stack<TYPE>::~Stack(void) while (!empty()) Node<TYPE> *extrapek = top; top = top->next; delete extrapek; //-push--------------------------------------------- void Stack<TYPE>::push(TYPE item) if (empty()) top = new Node<TYPE>(item); else top = new Node<TYPE>(item, top); 7

Dstr - 15 'DWDW\SHQN Dstr - 16 (QKHOWDQQDQLPSOHPHQWDWLRQGHO //-pop---------------------------------------------- TYPE Stack<TYPE>::pop(void) if (!empty()) TYPE item = top->data; Node<TYPE> *extrapek = top; top = top->next; delete extrapek; return item; else return 0; //-empty-------------------------------------------- bool Stack<TYPE>::empty(void)const return (top!= 0)? false : true; HQTXHXH 4XHXH GHTXHXH 8

'DWDW\SHQN Dstr - 17 'DWDW\SHQN Dstr - 18 ) UVODJWLOOVSHFLILNDWLRQ ) UVODJWLOOJUlQV\WD 9

Dstr - 19 Dstr - 20 'DWDW\SHQOLVWD 'DWDW\SHQOLVWD Exempel på användning #include "dubbellista.h" int main(void) oos_list<char*> minlista; LQVHUW) minlista.append("ett"); minlista.append("två"); minlista.append("tre"); minlista.append("fyra"); minlista.append("fem"); oos_iter<char*> j(minlista); UHPRYH for (j.last(); j.okay(); j.prev()) cout << j() << endl; cout << endl; minlista.insert("sex"); for (j.first(); j.okay(); j.next()) cout << j() << endl; cout << endl; minlista.clear(); return 0; fem fyra tre tvõ ett ett tvõ tre fyra fem sex 1

'DWDW\SHQOLVWD Dstr - 21 'DWDW\SHQOLVWD Dstr - 22 *UlQV\WD class oos_list friend class oos_iter<type>; public: oos_list(); oos_list(const TYPE &t); ~oos_list(); void append(const TYPE &); void prepend(const TYPE &); void insert(const TYPE &); void clear(); void remove(); void last(); void first(); TYPE &curitem()const; TYPE &firstitem()const; TYPE &lastitem()const; bool okay()const; bool hascur()const; bool hasfirst()const; bool haslast()const; void next(); void prev(); bool hasnext()const; bool hasprev()const; int size()const; 6SHFLILNDWLRQ private: //DET HÄR ÄR INGET FÖR DEN SOM ANVÄNDER LISTAN! int _size; oos_link<type> *_cur; oos_link<type> *_last; oos_link<type> *_first; ; 1

,WHUDWRU Dstr - 23,WHUDWRU Dstr - 24 *UlQV\WD 6SHFLILNDWLRQ class oos_iter public: oos_iter(const oos_list<type> &l); void first(); void last(); void next(); void prev(); bool okay()const; TYPE &operator()()const; TYPE &item()const; int hasnext()const; int hasprev()const; private: ; oos_link<type> *link; const oos_list<type> &list; 1

'XVNDNXQQD«Dstr - 25 'X VND YHWD YDG HQ DEVWUDNW GDWDW\S lu 'X VND NXQQD DQYlQGD GDWDW\SHUQD VWDFN N RFK OLVWD 'X VND NXQQD DQYlQGD HQ LWHUDWRU 'X VND I UVWn KXU OlQNDGH VWUXNWXUHU IXQJHUDU 1