#include <tpl_net_sup_dem.H>
Inheritance diagram for Aleph::Net_Sup_Dem_Node< Node_Info, F_Type >:
Collaboration diagram for Aleph::Net_Sup_Dem_Node< Node_Info, F_Type >:Public Types | |
| typedef F_Type | Flow_Type |
| Tipo que representa el flujo. | |
| using | Item_Type = Node_Info |
| using | Node = GTNodeCommon |
| Common alias for set types. | |
| using | Node_Type = Node_Info |
| The node. | |
Public Member Functions | |
| Flow_Type & | get_supply_flow () |
| Retorna el valor de provisión del nodo. More... | |
| Net_Sup_Dem_Node (const Node_Info &node_info) | |
| Net_Sup_Dem_Node (Net_Sup_Dem_Node *node) | |
| void | init () noexcept |
| void | allocate_more (size_t new_size) |
| void * | insert_arc (void *arc) |
| void | remove_arc_ne (void *arc) noexcept |
| void | remove_arc (void *arc) |
| bool | compress () noexcept |
| template<typename T > | |
| Dnode< T > * | to_dnode () noexcept |
| template<typename T > | |
| const Dnode< T > * | to_dnode () const noexcept |
| template<typename T > | |
| T & | to_data () noexcept |
| template<typename T > | |
| const T & | to_data () const noexcept |
| void | swap (Dlink *link) noexcept |
| void | swap (Dlink &l) noexcept |
| void | reset () noexcept |
| bool | is_empty () const noexcept |
Return true if this (as header node) is empty. | |
| bool | is_unitarian () const noexcept |
Return true if this (as header node) has exactly one element. | |
| bool | is_unitarian_or_empty () const noexcept |
Return true if this (as header node) has zeor or one element. | |
| void | insert (Dlink *node) noexcept |
| void | push (Dlink *node) noexcept |
| void | append (Dlink *node) noexcept |
| Dlink *& | get_next () const noexcept |
Return the link that is after this | |
| Dlink *& | get_prev () const noexcept |
Return the link that is before this | |
| Dlink *& | get_first_ne () const noexcept |
If this is a header node, it return the first node of this | |
| Dlink *& | get_last_ne () const noexcept |
If this is a header node, it return the last node of this | |
| Dlink *& | get_first () const noexcept |
If this is a header node, it return the first node of this | |
| Dlink *& | get_last () const noexcept |
If this is a header node, it return the last node of this | |
| void | wrap_header (Dlink *l) noexcept |
| void | insert_list (Dlink *head) noexcept |
| void | append_list (Dlink *head) noexcept |
| void | splice (Dlink *l) noexcept |
| void | concat_list (Dlink *head) noexcept |
| void | concat_list (Dlink &head) noexcept |
| Dlink * | del () noexcept |
Remove this from the list. this must not be a header node. | |
| void | erase () noexcept |
| Dlink * | remove_prev () noexcept |
| Dlink * | remove_next () noexcept |
| Dlink * | remove_last_ne () noexcept |
| Dlink * | remove_first_ne () noexcept |
| Dlink * | remove_last () noexcept |
| Dlink * | remove_first () noexcept |
| Dlink * | top () |
| Dlink * | pop () |
| size_t | reverse_list () noexcept |
| size_t | reverse () noexcept |
| size_t | split_list_ne (Dlink &l, Dlink &r) noexcept |
| size_t | split_list (Dlink &l, Dlink &r) noexcept |
| Dlink | cut_list (Dlink *link) noexcept |
| void | remove_all_and_delete () noexcept |
| void | rotate_left (size_t n) |
| void | rotate_right (size_t n) |
| bool | check () |
Return true if the list is consistent. | |
| Node_Info & | get_info () noexcept |
| Return a modifiable reference to the data contained in the node. | |
| const Node_Info & | get_info () const noexcept |
| Return a constant reference to the data contained in the node. | |
| unsigned int | state () const noexcept |
| Return the state's value. | |
| void | set_state (unsigned int s) noexcept |
Set the state to value s | |
Public Attributes | |
| Flow_Type | supply_flow |
| void ** | arc_array |
| size_t | arcs_dim |
| size_t | contract_threshold |
| Graph_Attr | attrs |
| Node_Info | node_info |
| size_t | num_arcs |
| data associated to the node. Access it with get_info() More... | |
Protected Attributes | |
| Dlink * | prev |
| Dlink * | next |
Nodo con provisión de flujo.
|
inline |
Constructor que recibe información de nodo a guardar. Los valores de atributos de capacidad y flujo son iniciados en cero.
|
inline |
Constructor copia de nodo. Los valores de atributos de capacidad y flujo son iniciados en cero.
|
inlinenoexceptinherited |
Insert nodebefore this.
| [in] | node | pointer to an empty node (it must no be inserted in another list) |
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Insert the list head after this
This method assumes that this is a node part of list; it is not the header node. On the other hand, head is the header node of an entire list. So, all the list head is entirely appended, in constant time, after the node this. After append, the list head becomes empty.
| [in] | head | header for the list to insert |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Concatenate list head to list this
this and head are both header nodes of lists. concat_list(head) concatenates in constant time all the list head after this. After the concatenation head becomes empty.
| head | header node of list to concatenate |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:Cut this from link.
cut_list(link) takes a valid link to an item of the list and on that link performs a cut; that is, all the items from link passes to a new list whose head is the return value.
The operation takes constant time.
Dlink object, not a pointer.link belongs to a list, then this one will be in an inconsistent state.| [in] | link | pointer to the item from which the cut will be done |
Dlink header of a new list containing the items from link
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
|
inline |
Retorna el valor de provisión del nodo.
Valor de provisión (positivo) o demanda (negativo).
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Insert node after this.
| [in] | node | pointer to an empty node (it must not be linked to nothing |
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Insert the list head before this
This method assumes that this is a node part of list; it is not the header node. On the other hand, head is the header node of an entire list. So, all the list head is entirely inserted, in constant time, before the node this. After insertion, the list head becomes empty.
| [in] | head | header for the list to insert |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
|
inlinenoexceptinherited |
Remove and free memory for all the items of list.
remove_all_and_delete() remove each item of the list and call to delete operator on the removed item. At the end of call, all the items were removed, all the memory freed qand the list emptied.
new. Although That is very frequently the case, there are some exceptions. So, be sure that the items were allocated with new operator.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
|
inlinenoexceptinherited |
Remove the item that is after this
Remove the item successor of this.
this is a header node, then this method is equivalent to remove the first node.this must not be a header node.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Remove the item that is before this
Remove the item predecessor of this.
this is a header node, then this method is equivalent to remove the last node.this must not be a header node.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Reset this
reset() reinitialize the node to point to itself. So, all the context is lost. Use with care.
Here is the caller graph for this function:
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Reverse the list.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineinherited |
Rotate to left the list n positions.
rotate_left(n) rotates the items to left n positions. For example, if the list is as follows:
l0, l1, l2, l3, l4, l5, l6, l7, l8, l9
Then rotate_left(4) produces the following state:
l4, l5, l6, l7, l8, l9, l0, l1, l2, l3
| [in] | n | the number of position to be rotated |
| domain_error | if list is empty |
Here is the call graph for this function:
|
inlineinherited |
|
inlinenoexceptinherited |
Insert a list l without header node after the node this.
| [in] | l | list without header node to be inserted after this |
Here is the call graph for this function:Split this in the middle in two lists.
split_list(l, r) searches the middle of this an on this point cuts the list in two lists l and r respectively. After the operation, this becomes empty.
l| [out] | l | first n/2 items of this |
| [out] | r | last n/2 items of this |
this before the split
Here is the call graph for this function:
|
inlinenoexceptinherited |
Swap this with list whose header is link.
swap(link) swaps the content og this with all the content of the list pointed by link. The operation is performed in constant time independently of sizes of both lists.
| [in] | link | pointer to the list to be swapped |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinenoexceptinherited |
Swap this with list whose header is l.
swap(l) swaps the content og this with all the content of the list referenced by l. The operation is performed in constant time independently of sizes of both lists.
| [in] | l | list to be swapped with this |
Here is the call graph for this function:
|
inlineinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
|
inlinenoexceptinherited |
Wrap a header to a list (without header).
Sometimes, especially for low level applications, you coult manage linked list without header nodes. In this case, in order to profit some operations expeting a list with header, you could "wrap" a temporal header and use the list and the operations of this class.
For example, suppose we have a list l without header node and we wish to insert it into a another list with a header node. In this case, we wrap a header to l as follows:
Dlink h; h.wrap_header(l);
Now, if we have a node p of another list, we could insert l after p as follows:
p->insert_list(&h);
After this operation h becomes empty and the list l is inserted after the node p
| [in] | l | first node of a double and circular list without header node |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inherited |
Attributes of node
|
inherited |
data associated to the node. Access it with get_info()
Number of arcs.
If the graph is directed, then this field does not have much sense, since it counts the total of arcs (incoming and outcoming).