鍊錶學習小記1

2021-10-10 07:04:11 字數 2364 閱讀 7802

#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 時省略掉會更好些,這樣不期望的空白符就不會出 現在檔案末尾,之後仍然可...