#include #include #include /*確認乙個鍊錶需要乙個引數:頭指標(儲存著首結點的位址)*/
typedef int data_t;
/*定義結點*/
typedef struct nodenode,* linklist;
/**函式宣告區:
*鍊錶定義、增刪改查
*/linklist list_create(); //建立鍊錶
void list_show(linklist phead); //遍歷鍊錶
bool list_is_empty(linklist phead); //判斷鍊錶是否為空
void sort_list(linklist phead); //鍊錶排序
int list_length(linklist phead); //求鍊錶的長度
void list_insert(linklist phead, int i, data_t e);//鍊錶中插入元素
bool list_delete(linklist phead,int i,data_t *e);//刪除鍊錶中的元素
/*主函式區*/
int main()
/*函式實現區*/
/*建立鍊錶的思路
*定義乙個頭結點和尾結點(尾結點指標域始終指向null),臨時的結點
*迴圈輸入每個結點的值(判斷新結點和頭尾結點動態記憶體是否申請成功)
*將每次輸入的結點值賦給新結點
*建立鍊錶核心:
*1、新結點的位址賦值給尾結點的指標域
*2、新結點清空,用於儲存下乙個量
*3、尾結點指標域指向null
*/linklist list_create()
pnew->data = val;//將值賦給新結點的資料域
ptail->next = pnew;//新結點的位址賦值給尾結點指標域
pnew->next = null;//清空新結點
ptail = pnew;//將新指標定義為尾指標
}return phead;
}/*鍊錶顯示思路:
*從首結點開始賦值
*直到結點指標域指向null時賦值完畢
*輸出每個結點的值
*/void list_show(linklist phead)
}/*判斷鍊錶是否為空的思路:
*如果頭結點的指標域指向為null時候,整個鍊錶為空鍊錶
*/bool list_is_empty(linklist phead)
/*鍊錶排序思路:
*定義兩個結點指標
*乙個從首結點開始遍歷,乙個從鍊錶第二個結點開始遍歷
*比較兩個指標指向結點的資料域的值的大小
*通過中間變數進行值得互換
*/void sort_list(linklist phead)}}
}/*求鍊錶長度的思路:
*指標從首結點開始遍歷,指向null結束,每遍歷乙個結點計數器+1
*/int list_length(linklist phead)
return count;
}/*在鍊錶中第i個結點前插入乙個新結點,值為e,並且i的值為1*/
/*鍊錶插入思路:
*定義乙個結點指標從首結點開始遍歷,定義乙個變數從1開始。
*jnext;
s = (linklist)malloc(sizeof(node));
while((p != null) && (j < i))
if((p == null) || (j > i))
return;
s->data = e;
s->next = p->next;//插入點後的位址賦值給新插入的結點
p->next = s;//新插入的結點的位置賦值給前面的結點
}/*鍊錶刪除的思路:
*思路大體與插入相同
*將要刪除的結點的位址資訊儲存在臨時結點指標中
*降臨時結點釋放
*/bool list_delete(linklist phead,int i,data_t *e)
if((p == null) || (j > i))
return false;
q = p->next;//將要刪除的結點先儲存下來
p->next = q->next;
*e = q->data;
free(q);
q = null;
return true;
}
鍊錶學習(1)
什麼是鍊錶 是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標 pointer 由於不必須按順序儲存,鍊錶在插入的時候可以達到o 1 的複雜度,比另一種線性表順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要o n 的時間,而順序表...
鍊錶的學習(1)
關於鍊錶的插入,存在兩種插入方式 頭插法和尾插法。顧名思義,就是在鍊錶的頭部和尾部分別插入資料,則產生的順序也就不一樣。比如要插入的資料是1 2 3 4 5這5個數。頭插法即先將1插入到空的鍊錶中,之後2插到1的前面,依次類推產生的鍊錶就是5 4 3 2 1,而尾插法和頭插法正好相反,即1 2 3 ...
php學習小記1
前期準備 1.和總是可用的 2.要輸出大段文字時,跳出 php 解析模式通常比將文字通過 echo 或 print 輸出更有效率。3.檔案末尾的 php 段結束標記可以不要,有些情況下當使用 include 或者 require 時省略掉會更好些,這樣不期望的空白符就不會出 現在檔案末尾,之後仍然可...