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