YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftware
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
/* CodeforhandlingdoublylinkedlistsinC
*/
#include"mysys_priv.h" #include <my_list.h>
/* Add an element to start of list */
LIST *list_add(LIST *root, LIST *element)
{
DBUG_ENTER("list_add");
DBUG_PRINT("enter",("root: %p element: %p", root, element)); if (root)
{ if (root->prev) /* If add in mid of list */
root->prev->next= element;
element->prev=root->prev;
root->prev=element;
} else
element->prev=0;
element->next=root;
DBUG_RETURN(element); /* New root */
}
LIST *list_delete(LIST *root, LIST *element)
{ if (element->prev)
element->prev->next=element->next; else
root=element->next; if (element->next)
element->next->prev=element->prev; return root;
}
void list_free(LIST *root, uint free_data)
{
LIST *next; while (root)
{
next=root->next; if (free_data)
my_free(root->data);
my_free(root);
root=next;
}
}
LIST *list_cons(void *data, LIST *list)
{
LIST *new_charset=(LIST*) my_malloc(key_memory_LIST, sizeof(LIST),MYF(MY_FAE)); if (!new_charset) return0;
new_charset->data=data; return list_add(list,new_charset);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.