鍊錶(linked list):是一種常見的資料結構,是一種線性表,但並不會按線性的儲存資料,而是每個結點裡存著指向下乙個結點的指標。-優點:由於不必按順序儲存,鍊錶在插入式的時間複雜度為o(1)。
-缺點:查詢或訪問特定結點需要遍歷,不支援隨機查詢和訪問,時間複雜度o(n)。
typedef
struct lnode
lnode, * linklist; //lnode 為鍊錶結點的型別,linklist為鍊錶的型別
//帶頭結點
void ini_linklist(linklist *l)
//在這裡,建立鍊錶,要對實參進行改變,所以對於型別linklist要傳位址過來。筆者剛學習的時候對這些不太了解,所以又有如此下的一種寫法,可以暫時規避這個問題。
linklist ini_linklist(void)
//不帶頭結點
linklist ini_linklist(void)
顧名思義,將結點查到鍊錶的最前頭,使其成為第乙個結點(若是帶頭結點的鍊錶,則插入在頭結點後)
說明:無論插入還是刪除,我們都需要知曉我們操作結點的前驅結點的位置。
關鍵**
//**帶頭結點的頭插法**
//說明:pnew為插入結點,pre為pnew的前驅,這裡應為頭結點l
pnew->next=l->next;
l->next=pnew;
//**不帶頭結點的頭插法**
//說明:筆者習慣用l表示不儲存資料的頭結點,對於儲存資料的頭結點使用head表示
pnew->next=phead;
下面附上兩個實現的頭插法版本
//首先是帶頭結點的
void head_insert(linklist *l)
}
//不帶頭結點版本
void show_link(linklist head)
while(ptr!=null)
printf("\n");
}
尾插法,插入在鏈表現有元素的最後乙個元素(tail)之後。
關鍵**
//在這裡有沒有頭結點操作沒有不同,除非使用尾插法初始化的是第乙個元素,這裡我們不討論這個問題,會在下面的具體例項裡處理
//說明:pnew為待插入結點,ptail為尾元素,也將成為pnew的前驅。
pnew->next=ptail->next;
ptail->next=pnew;
ptail=pnew;
下面附上兩個版本的尾插法
//帶頭節點版本
#include "myfunc.h"
void tail_insert(linklist *l)
//尾插
while(scanf("%d",&val)!=eof)
}
//不帶頭結點版本
void tail_insert(linklist *head)
while(ptail->next!=null)
//尾插
while(scanf("%d",&val)!=eof)
}
關鍵**//說明:ptr為操作結點指標,pre為其前驅
pre->next=ptr->next;
free(ptr);//只能釋放由malloc,realloc等分配的空間,你如果不知道是否是這樣的分配,最好不寫。
還是慣例,附上兩個刪除版本
//帶頭結點
void delete_link(linklist *l,int val)
while(ptr!=null)
pre=ptr;
ptr=ptr->next;
}printf("no such datum\n");
}
//不帶頭結點版本
#include "myfunc.h"
void delete_link(linklist *head,int val)
if(ptr->data==val)
pre=ptr;
ptr=ptr->next;
while(ptr!=null)
pre=ptr;
ptr=ptr->next;
}printf("no such value\n");
}
鍊錶 環形鍊錶
環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...
鍊錶 初識鍊錶
鍊錶 前言 小弟初學資料結構,有錯誤的地方望大家不吝賜教 認識鍊錶 列表相比陣列更具有優勢,鍊錶不同於資料和其他資料結構依靠位置來進行訪問或者其他操作,如陣列是依靠下表來運算元據。而鍊錶是通過關係來尋找或者運算元據。鍊錶的特性 插入 和 刪除 效率高,只需要變更指向的鏈結點即可。但是隨即訪問操作的效...
鍊錶(鍊錶建立)
先找到了一些與單鏈表相關的概念 2.指標域 ai元素儲存指向後繼元素儲存位置的資訊 3.結點 包含資料域和指標域 4.單鏈表 每個結點只包含乙個指標域的線性表 5.頭指標 要素 鍊錶中第乙個結點的儲存位置 線性表最後乙個結點指標為空 6.頭結點 非要素 單鏈表第乙個結點前附設乙個結點 其指標域指向第...