.


:




:

































 

 

 

 


13.




 

, , , . , .

, , .

() (struct), : . . : , . :

struct node

{

int data; //

node *next; //

};

- , , - . . .

: (begin) (end):

node *begin, *end;

, .

1. ( )

void first(int d)

{

node *pv = new node; //

pv->data = d; //

pv->next = NULL; //

begin = pv; //

end = pv; //

}

 

2.

void add(int d)

{

node *pv = new node; //

pv->data = d; //

pv->next = NULL; //

end->next = pv; //

end = pv; //

}

 

3.

int del()

{

int temp = begin->data;

node *pt = begin; // node

begin = begin->next;

delete pt;

return temp;

}

 

.

int main()

{

// 10

first(10);

 

// 20,30,40,50 60

for (int i=20; i<70; i+=10)

add(i);

 

//

puts("Ochered 1:");

node *pt = begin; // -

while (pt!= NULL)

{

printf("Value = %d\n", pt->data);

pt = pt->next;

}

 

//

puts("\nSelection 4 nodes:");

for (i=0; i<4; ++i)

printf("%d\t", del());

 

// 100,200 300

puts("\n\nAddition 3 nodes:");

for (i=100; i<400; i+=100)

{

add(i);

printf("%d\t", i);

}

 

//

puts("\n\nOchered 2:");

pt = begin;

while (pt!= NULL)

{

printf("Value = %d\n", pt->data);

pt = pt->next;

}

return 0;

}

- , , . . .

(top), :

node *top;

, .

1.

void first(int d)

{

node *pv = new node; //

pv->data = d; //

pv->next = NULL; //

top = pv; //

}

 

2.

void push(int d)

{

node *pv = new node; //

pv->data = d; //

pv->next = top; //

top = pv; //

}

 

3.

int pop()

{

int temp = top->data; // temp

node *pt = top; // node

top = top->next; //

delete pt; // -

return temp;

}

 

.

int main()

{

// 10

first(10);

 

// 20,30,40,50 60

for (int i=20; i<70; i+=10)

push(i);

 

//

puts("Stack 1:");

node *pt = top;

while (pt!= NULL)

{

printf("Value = %d\n", pt->data);

pt = pt->next;

}

 

//

puts("\nSelection 4 nodes:");

for (i=0; i<4; ++i)

printf("%d\t", pop());

 

// 100,200 300

puts("\n\nAddition 3 nodes:");

for (i=100; i<400; i+=100)

{

push(i);

printf("%d\t", i);

}

 

//

puts("\n\nStack 2:");

pt = top;

while (pt!= NULL)

{

printf("Value = %d\n", pt->data);

pt = pt->next;

}

return 0;

}

- , . (). - , (), , .

, . . , , , ..

:

1) ;

2) ;

3) ;

4) ( );

5) ;

6) .

, . :

struct node

{

int data; //

node *next; //

};

 

: (begin) (end):

node *begin, *end;

, .

1.

void first(int d)

{

node *pv = new node; //

pv->data = d; //

pv->next = NULL; //

begin = pv; //

end = pv; //

}

 

2.

void add(int d)

{

node *pv = new node; //

pv->data = d; //

pv->next = NULL; //

end->next = pv; //

end = pv; //

}

 

3.

node *find(int key) //

{

node *pt = begin; // node

while (pt!= NULL)

{

if (pt->data == key)

break; //

pt = pt->next; //

}

return pt;

}

 

4.

void insert(int key, int d)

{

node *pkey; // node

pkey = find(key); //

if (pkey!= NULL)

{

//

node *pv = new node; //

pv->data = d; //

pv->next = pkey->next; //

pkey->next = pv; //

if (pkey == end)

end = pv; //

}

}

 

5.

int remove(int key)

{

node *pkey; // node

pkey = find(key); //

if (pkey!= NULL)

{

//

if (pkey == begin)

{

begin = begin->next; //

if (pkey == end)

end = NULL; //

}

else

{

// ,

node *prev = begin; // node

while (prev!= NULL)

{

if (prev->next == pkey)

break; //

prev = prev->next; //

}

if (pkey == end)

{

prev->next = NULL;

end = prev; //

}

else

prev->next = pkey->next;

}

delete pkey; // -

return 1; //

}

return 0; // ( )

}

 

6. (, )

void add_sort(int d)

{

node *pv = new node; //

pv->data = d; //

 

node *pt = begin, *prev = begin; // node

while (pt!= NULL)

{

if (pt->data > d)

{

// (pt)

pv->next = pt;

if (pt == begin)

begin = pv; //

else

prev->next = pv; //

return; //

}

prev = pt;

pt = pt->next;

}

//

pv->next = NULL;

end->next = pv;

end = pv; //

}

 

.

int main()

{

//

// 10

first(10);

 

// 20,30,40 50

for (int i=20; i<60; i+=10)

add(i);

 

// 200 20

insert(20, 200);

 

// 400 40

insert(40, 400);

 

// 40

if (!remove(40)) // if (remote(40) == 0)

puts("Remove --> not found");

 

// 500

add(500);

 

//

puts("Unordered spisok:");

node *pt = begin;

while (pt!= NULL)

{

printf("Key = %d\n", pt->data);

pt = pt->next;

}

 

//

// ( )

while (begin!= NULL)

remove(begin->data);

 

// 20000

first(20000);

 

//

for (i=0; i<9; ++i)

add_sort(rand()); // rand

 

//

puts("\nOrdered spisok:");

pt = begin;

while (pt!= NULL)

{

printf("Key = %d\n", pt->data);

pt = pt->next;

}

return 0;

}

- , , , , , . . . , , . , - . , .

, , - , ( ). , .

, .

:

- ;

- ;

- ;

- ;

- .

, . :

struct node

{

int data; //

node *left; //

node *right; //

};

.


 

20 . , , .

N, 20, . N , N 20 , 20. , .

, N = 47. N > 20 , , N 20 , 20. 7, .





:


: 2016-04-03; !; : 478 |


:

:

, .
==> ...

768 - | 678 -


© 2015-2024 lektsii.org - -

: 0.082 .