Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Examination_IT / ComputerScience_LaboratoryWork_ForStudent

.pdf
Скачиваний:
18
Добавлен:
16.05.2015
Размер:
5.86 Mб
Скачать

181

15. 15. 15.

( ( # 5! #

( ( # 5! #-!1 /

-!1 /.

15.1. %-./ +E(34

G A .

15.2. -( -3,D- ,- 6-*- ,

e A , ^ -

AB . - -

, , C . . -

R R>>. @ C C -

.

6-*- , ,) 1 (0 +>>, (6+ ,

; R > >. ;

, -

. D

. 16.1. 4

AB R (next). 4 -

AB R (next), -

B (prev), , B

A

R.

P A ^, -

R . 2

B A - AB R. D , ( )

182

( ).

= >

 

= >

 

= >

R

 

R

 

R

 

 

 

 

 

 

 

 

 

 

AB

 

AB

 

AB

R

 

R

 

R

 

 

 

 

 

H. 15.1. .

D R AB :

$

4

struct SItem

struct DItem

 

{

{

K.

// k(v † ! K.

// k(v † !

SItem *next;// I Q

DItem *next;//

I Q

// ! :e L

// ! :e L

// _ .

// _ .

};

DItem *prev;//

I Q

 

// % !J! e L

 

// _ .

 

};

 

e ,

>, AB R ,

R . ! ,

R ( -

R R A), -

« » , >.

R ,

R .

(0 +>> + -+.,)+;, (* ( 6 ) (0( 1, +

P , AB -

, R, R A

183

> A R ,

. D A > ( 15.1)

( 15.3). Q

( 15.2), A. - -

> OutList

R .

, 3, 0 15.1. #+5. List.h

#ifndef __LIST__H__ #define __LIST__H__

//- _ %. struct SItem

{

int Id; SItem *next;

};

//% % QI L : K :. namespace FIOStudent

{

//=========wr r " x ~‘Rz”"}=====================

//J ! _ _J %.

void OutList(SItem *Head);

// ( _ %.

void AddItem(SItem *Head, SItem *NewItem, SItem **Teil);

//‘! _ % ! K ID. I e

//! ! _ NULL, _

//L!.

SItem *DeleteItem(SItem *Head, int Id, SItem **Teil);

//R ! _ % ! K ID. I e

//! L! _ NULL, _

//L!.

SItem *GetItem(SItem *Head, int Id); // ! _ %.

void DeleteAllItem(SItem **Head, SItem **Teil);

// _ % K % !. void AddItemInside(SItem *Head, SItem *NewItem,

SItem **Teil);

}

#endif

, 3, 0 15.2. # +0>- 3 9+5.+ List.cpp

#include "stdafx.h" #include <iostream> #include "List.h"

184

//////////////////////////////////////////////////////////////

// J ! _ _J %. void FIOStudent::OutList(SItem *Head)

{

using namespace std;

SItem *Curr; // I Q e L _ %. if(!Head)

{

cout << "% % ." << endl; return;

}

Curr = Head; // I Q e L _ .

//J ! _ _J % ! %,

//% I Q ! :e L _ NULL. while (Curr->next)

{

//J ! ! 9 e _ %.

cout << Curr->Id <<

" ";

//

! !

:e _ %

//

(! :e L _ e).

Curr = Curr->next;

}

//J ! ! 9 % ! _ %

//I Q ! :e L _ Q NULL. cout << Curr->Id;

cout << endl;

}

… …

, 3, 0 15.3. # +0>- 3 9+5.+ DemoList.cpp

// ! : I J K L. #include "stdafx.h"

#include <iostream> #include "List.h"

//////////////////////////////////////////////////////////////

//

void _tmain()

{

using namespace std;

using namespace FIOStudent;

// R % % QI JL IJ. setlocale(LC_CTYPE, "Russian_Russia.1251");

SItem *Head = NULL; // I Q %.

SItem *Teil;

//

I Q %.

SItem *Buff;

// K.

SItem *NewItem;

//

JL _ %.

185

int i;

OutList(Head);

// I! _ %. Head = new SItem;

Head->Id = 0; Head->next = NULL; Teil = Head;

// ~ % I 10 _ . for(i=1; i<10; i += 2)

{

NewItem = new SItem; NewItem->Id = i; AddItem(Head, NewItem, &Teil);

}

cout << ""! K J K %" << endl; OutList(Head);

// ‘! _ % ! K Id == 5. Buff = DeleteItem(Head, 5, &Teil);

if(Buff) delete Buff;

cout << ""! K J % ! J _ "; cout << endl;

OutList(Head);

//_ %. NewItem = new SItem;

NewItem->Id = 20; AddItem(Head, NewItem, &Teil);

cout << " _ %" << endl; OutList(Head);

//_ Id==6 K % !. NewItem = new SItem;

NewItem->Id = 6; AddItemInside(Head, NewItem, &Teil);

cout<<" _ K % !"; cout << endl;

OutList(Head);

//_ c Id==200 K % !. NewItem = new SItem;

NewItem->Id = 200; AddItemInside(Head, NewItem, &Teil);

cout<<" _ K % !"; cout << endl;

OutList(Head);

186

//R ! _ % ! K 3. Buff = GetItem(Head, 3);

if(Buff)

cout << "R L! _ Id = " << Buff->Id << endl;

else

cout << "š L!." << endl;

//‘! _ %.

DeleteAllItem(&Head, &Teil);

OutList(Head);

}

H DemoList

. 15.2.

H. 15.2. H DemoList

(0 +>> + -+.,)+;, >- j *. +E(34 ( 1, (>

- -

, B AB A

C . D - C A ( 15.4), AB , -

, R-

> ( ).

187

, 3, 0 15.4. # +0>- 3 9+5.+ MyList.cpp

// ! : I J K L. #include "stdafx.h"

#include <iostream> #include <conio.h> #include "List.h"

enum menu {EXIT,

NEW_ELEM,

DELETE_ELEM,

DELETE_ALL,

PRINT_ELEM, PRINT_ALL,

SAVE_FILE,

OPEN_FILE,

END};

 

 

 

int Menu();

// J ! _ :

 

void _tmain()

{

setlocale(LC_CTYPE, "Russian_Russia.1251");

SItem *Head = NULL; // I Q %.

SItem *Teil;

//

I Q %.

SItem *Buff;

// K.

SItem *NewItem;

// JL _ %.

int CmdMenu;

// ! :.

for(;;)

 

 

{

 

// % IJ :.

CmdMenu = Menu();

switch (CmdMenu)

 

{

 

// J ! I % J.

case EXIT:

return;

 

break;

 

case NEW_ELEM:

//k(v † % ; !, ! :e L

//JL _ %.

break;

case DELETE_ELEM:

//k(v † % ; !, ! :e L

//_ I %.

break;

//k(v † % ; !, J :e L Q J

//!J :.

}

}

}

//////////////////////////////////////////////////////

// J ! : % 9. int Menu()

{

188

// R % % QI JL IJ. int CmdMenu;

using namespace std;

cout << "#vR•:" << endl;

 

 

 

 

for(;;)

 

 

 

 

 

{

EXIT

<<

"

- J !";

cout <<

cout <<

endl;

<<

"

- JL _ " << endl;

cout <<

NEW_ELEM

cout <<

DELETE_ELEM

<<

"

-

! Q _ ..." << endl;

cout <<

DELETE_ALL

<<

"

-

! Q Q % _ ";

cout <<

endl;

<<

"

- J _ _ ...";

cout <<

PRINT_ELEM

cout <<

endl;

<<

"

- J Q % _ ";

cout <<

PRINT_ALL

cout <<

endl;

<<

"

- Q K L..." << endl;

cout <<

SAVE_FILE

cout <<

OPEN_FILE

<<

"

- J Q K L..." << endl;

cout <<

"R !J

:: ";

cin >>

CmdMenu;

 

 

>= END)

if(CmdMenu <0 || CmdMenu

{

cout << "rj"sz{ - L !J ." << endl; continue;

}

else

return CmdMenu;

}

return CmdMenu;

}

15.3. + ,+ 34 )+*+ ,5

%

:

( )

 

 

-

 

%

 

 

 

 

 

 

 

 

 

 

1

1

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D

2

1

2 >

1.

- .

 

 

 

2.

D .

 

 

 

3.

D

 

 

 

189

 

 

 

 

 

 

:

( )

 

 

%

-

 

%

 

 

 

 

 

 

 

 

 

 

3

1

 

1.

- .

 

 

-

2.

D .

 

 

 

3.

D

4

1

CD

1. - .

 

 

DVD

2. D .

 

 

 

3.

D

5

1

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

 

6

2

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

` >

7

2

2 >

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

` >

8

2

 

1.

- .

 

 

-

2.

D .

 

 

 

3.

D .

 

 

 

4.

` >

9

2

CD

1. - .

 

 

DVD

2. D .

 

 

 

3.

D .

 

 

 

4.

` >

10

2

CD

1. - .

 

 

DVD

2. D .

 

 

 

3.

D .

 

 

 

4.

` >

11

2

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

` >

 

 

 

190

 

 

 

 

 

 

:

( )

 

 

%

-

 

%

 

 

 

 

 

 

 

 

 

 

12

3

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

` >.

 

 

 

5.

e >

13

3

2 >

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

` >.

 

 

 

5.

e >

14

3

 

1.

- .

 

 

-

2.

D .

 

 

 

3.

D .

 

 

 

4.

` >.

 

 

 

5.

e >

15

3

CD

1. - .

 

 

DVD

2. D .

 

 

 

3.

D .

 

 

 

4.

` >.

 

 

 

5.

e >

16

3

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

` >.

 

 

 

5.

e >

17

4

 

1.

- .

 

 

 

2.

D .

 

 

 

3.

D -

 

 

 

 

.

 

 

 

4.

-

 

 

 

 

.

 

 

 

5.

` >.

 

 

 

6.

e >

Соседние файлы в папке Examination_IT