.


:




:

































 

 

 

 


a




pos+1
1.
2. .
3. , .
4. .
5. .
6. - .
7. .
8.

 

}

 

void insert(int data, int pos)
/* pos+1 */
{ node* tmp = new node;
tmp->item = data;
node* ptmp = head;
if(ptmp == 0)
{ tmp->next = 0;
tmp->prev = 0;
head = tmp;
tail = tmp;
return;

int i = 0;
while ((i<pos)&&(ptmp->next))
{ ptmp = ptmp->next;
i++;
}
if (ptmp->next == 0)
{ ptmp->next = tmp;
tmp->prev = ptmp;
tmp->next = 0;
tail = tmp;
return;
}

ptmp->next->prev = tmp;
tmp->next = ptmp->next;
ptmp->next = tmp;
tmp->prev = ptmp;}

c pos.
1. .
2. .
3.
4.

int remove (int pos)
{ node* tmp = head;
for (int i = 0; i<pos; i++)
{ if(tmp == 0) return 0;
tmp = tmp ->prev; }
tmp->next->prev = tmp->prev;
if(tmp ->prev!= 0)
tmp->prev->next = tmp->next;
int res = tmp->item;
delete tmp;
return res; }

int pop_front()
{ if (head)
{ int res = head->item;
node *tmp = head;
if (head->next)
head->next->prev = 0;
else tail = 0;
head = head->next;
delete tmp; return res;}
else return 0; }

 

 


int pop_back()
{ if(tail)
{ int res = tail->item;
node *tmp = tail;
if(tail->prev) tail->prev -> next = 0;
else head = 0;
tail = tail->prev;
delete tmp;
return res;
}return 0;}

- , , (TOP HEAD). LIFO (Last-in-First-out)

:
Init
PEEK

POP
PUSH
EMPTY True,

 

struct stack
{

int item;
stack *prev;

};
stack *top;
void InitStack ()
{

top = NULL;
}

 

void push (int a)
//
{
stack *temp;
temp = new stack;
temp->prev = top;
temp->item = a;
top = temp;
}

 

int pop ()
//
{
int res;
stack *temp;
temp = top;
top = top->prev;
res = temp->item;
delete temp;
return res;
}

 

 

int peek ()
//
{
if (top) return top->item;
}

 

bool is_empty ()

//
{ bool res = false;
if (top == NULL)
res = true;
return res;

}


void removestack ()
//
{
stack *temp;
temp = top;
while (top)
{
temp = top;
top=top->prev;
delete temp;

}

}


int Size = 100;
int size; /* */
int* p; * */
int top; /* */
int* ArrayStack(int _size)
{
size = _size > Size?_size: Size;
p = new int[size];
top = -1;
return p;
}

bool isEmpty() /* ? */
{
return top == -1;
}

bool isFull() /* ? */
{
return top + 1 == size;
}

 

void DeleteStack()
/* */
{
top = -1;
size = 0;
delete []p;
p = 0;
}

 

int push(const int n)
/* */
{
if (isFull ())
return -1;
top++;
p[top] = n;
return top;
}

int pop ()
/* */
{ if(!isEmpty())
{ int res = p[top];
top--;
return res;}
return 0;
}

 

- - .


(A+B*(D-E))/(F+G)

/*+AB-DE+FG

ABDE-*+FG+/

:
1. () , .
2. , . , .

3. . , . . .

 

- , , (REAR),
, (FRONT). FIFO (First-in-First-out: ).


1.
2. .
3.
4. , .


1. ,
2. .
3. , , ,





:


: 2016-07-29; !; : 2062 |


:

:

: , , , , .
==> ...

1520 - | 1389 -


© 2015-2024 lektsii.org - -

: 0.011 .