Node GetLastElement(Node _head) { Node _lastElement = _head; while (!IsLastElement(_lastElement)) _lastElement = GetNextElement(_lastElement); return _lastElement; }
void AddElementToSet(SetHeadPtr head, ElementPtr element) { if(!ElementExists(head, element)) { ElementPtr current = head->next; if (!IsOutOfRange(current) && IsLargerPowerThan(current, element)) { for (; !IsLastElement(current) && IsLargerPowerThan(current->next, element); SetToNext(¤t)); element ->next = current->next; current ->next = element; } else { element ->next = head->next; head ->next = element; } } }
ElementType Pop( Deque D ) { PtrToNode ptr = NULL; ElementType value; if(!D) return ERROR; if(IsEmpty(D)) return ERROR; ptr = D->Front; if(IsLastElement(ptr, D)) { Initialize(D); }else { D->Front = ptr->Next; (ptr->Next)->Last = (PtrToNode)D; } value = ptr->Element; free(ptr); return value; }