⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list_8h.html

📁 常用的数据结构和算法函数库
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>C Algorithms: list.h File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.4 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>list.h File Reference</h1>Doubly-linked list. <a href="#_details">More...</a><p><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Typedefs</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _ListEntry&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a0">ListEntry</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an entry in a doubly-linked list.  <a href="#a0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a1">ListIterator</a> )(void *data, void *user_data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback function used for iterating over a list.  <a href="#a1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a2">ListCompareFunc</a> )(void *data1, void *data2)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback function used to compare values in a list when sorting.  <a href="#a2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a3">ListEqualFunc</a> )(void *data1, void *data2)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback function used to determine of two values in a list are equal.  <a href="#a3"></a><br></td></tr><tr><td colspan="2"><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4">list_free</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free an entire list.  <a href="#a4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a5">list_prepend</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> **list, void *data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prepend data to the start of a list.  <a href="#a5"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a6">list_append</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> **list, void *data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append data to the end of a list.  <a href="#a6"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a7">list_prev</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *listentry)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the previous entry in a list.  <a href="#a7"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a8">list_next</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *listentry)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the next entry in a list.  <a href="#a8"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a9">list_data</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *listentry)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the data at a list entry.  <a href="#a9"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a10">list_nth_entry</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list, int n)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the entry at a specified index in a list.  <a href="#a10"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a11">list_nth_data</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list, int n)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the data at a specified entry in the list.  <a href="#a11"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a12">list_length</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the length of a list.  <a href="#a12"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a13">list_to_array</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a C array containing the contents of a list.  <a href="#a13"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a14">list_foreach</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list, <a class="el" href="list_8h.html#a1">ListIterator</a> callback, void *user_data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterate over all entries in a list.  <a href="#a14"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a15">list_remove_entry</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> **list, <a class="el" href="list_8h.html#a0">ListEntry</a> *entry)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an entry from a list.  <a href="#a15"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a16">list_remove_data</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> **list, <a class="el" href="list_8h.html#a3">ListEqualFunc</a> callback, void *data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove all occurrences of a particular piece of data from a list.  <a href="#a16"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a17">list_sort</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> **list, <a class="el" href="list_8h.html#a2">ListCompareFunc</a> compare_func)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sort a list.  <a href="#a17"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a18">list_find_data</a> (<a class="el" href="list_8h.html#a0">ListEntry</a> *list, <a class="el" href="list_8h.html#a3">ListEqualFunc</a> callback, void *data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the entry for a particular data item in a list.  <a href="#a18"></a><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Doubly-linked list. <p>A doubly-linked list stores a collection of values. Each entry in the list (represented by a pointer a <a class="el" href="list_8h.html#a0">ListEntry</a> structure) contains a link to the next entry and the previous entry. It is therefore possible to iterate over entries in the list in either direction.<p>To create an empty list, create a new variable which is a pointer to a <a class="el" href="list_8h.html#a0">ListEntry</a> structure, and initialise it to NULL. To destroy an entire list, use <a class="el" href="list_8h.html#a4">list_free</a>.<p>To add data to a list, use <a class="el" href="list_8h.html#a6">list_append</a> or <a class="el" href="list_8h.html#a5">list_prepend</a>.<p>To remove data from a list, use <a class="el" href="list_8h.html#a15">list_remove_entry</a> or <a class="el" href="list_8h.html#a16">list_remove_data</a>.<p>To iterate over entries in a list, use <a class="el" href="list_8h.html#a8">list_next</a> and <a class="el" href="list_8h.html#a7">list_prev</a>, along with the <a class="el" href="list_8h.html#a9">list_data</a> function to access data.<p>To access an entry in the list by index, use <a class="el" href="list_8h.html#a10">list_nth_entry</a> or <a class="el" href="list_8h.html#a11">list_nth_data</a>.<p>To sort a list, use <a class="el" href="list_8h.html#a17">list_sort</a>.<hr><h2>Typedef Documentation</h2><a class="anchor" name="a2"></a><!-- doxytag: member="list.h::ListCompareFunc" ref="a2" args=")(void *data1, void *data2)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="list_8h.html#a2">ListCompareFunc</a>)(void *data1, void *data2)          </td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </td>    <td><p>Callback function used to compare values in a list when sorting. <p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign="top"></td><td valign="top"><em>data1</em>&nbsp;</td><td>The first value to compare. </td></tr>    <tr><td valign="top"></td><td valign="top"><em>data2</em>&nbsp;</td><td>The second value to compare. </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>A negative value if data1 should be sorted before data2, a positive value if data1 should be sorted after data2, zero if data1 and data2 are equal.</dd></dl>    </td>  </tr></table><a class="anchor" name="a0"></a><!-- doxytag: member="list.h::ListEntry" ref="a0" args="" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top">typedef struct _ListEntry <a class="el" href="list_8h.html#a0">ListEntry</a>          </td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </td>    <td><p>Represents an entry in a doubly-linked list. <p>The empty list is represented by a NULL pointer. To initialise a new doubly linked list, simply create a variable of this type containing a pointer to NULL.    </td>  </tr></table><a class="anchor" name="a3"></a><!-- doxytag: member="list.h::ListEqualFunc" ref="a3" args=")(void *data1, void *data2)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="list_8h.html#a3">ListEqualFunc</a>)(void *data1, void *data2)          </td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </td>    <td><p>Callback function used to determine of two values in a list are equal. <p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign="top"></td><td valign="top"><em>data1</em>&nbsp;</td><td>The first value to compare. </td></tr>    <tr><td valign="top"></td><td valign="top"><em>data2</em>&nbsp;</td><td>The second value to compare. </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>A non-zero value if data1 and data2 are equal, zero if they are not equal.</dd></dl>    </td>  </tr></table><a class="anchor" name="a1"></a><!-- doxytag: member="list.h::ListIterator" ref="a1" args=")(void *data, void *user_data)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top">typedef void(* <a class="el" href="list_8h.html#a1">ListIterator</a>)(void *data, void *user_data)          </td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </td>    <td><p>Callback function used for iterating over a list. <p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The element being iterated over. </td></tr>    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Extra data specified by the user.</td></tr>  </table></dl>    </td>  </tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="a6"></a><!-- doxytag: member="list.h::list_append" ref="a6" args="(ListEntry **list, void *data)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a>* list_append           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> **&nbsp;</td>          <td class="mdname" nowrap> <em>list</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td class="md"></td>          <td class="md" nowrap>void *&nbsp;</td>          <td class="mdname" nowrap> <em>data</em></td>        </tr>        <tr>          <td class="md"></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </td>    <td><p>Append data to the end of a list. <p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>Pointer to the list to append to. </td></tr>    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Data to append. </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>The new entry in the list.</dd></dl>    </td>  </tr></table><a class="anchor" name="a9"></a><!-- doxytag: member="list.h::list_data" ref="a9" args="(ListEntry *listentry)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top">void* list_data           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="list_8h.html#a0">ListEntry</a> *&nbsp;</td>          <td class="mdname1" valign="top" nowrap> <em>listentry</em>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </td>    <td><p>Retrieve the data at a list entry. <p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign="top"></td><td valign="top"><em>listentry</em>&nbsp;</td><td>Pointer to the list entry. </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>The data at the list entry.</dd></dl>    </td>  </tr></table><a class="anchor" name="a18"></a><!-- doxytag: member="list.h::list_find_data" ref="a18" args="(ListEntry *list, ListEqualFunc callback, void *data)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -