, , , . , .
, , .
() (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, .