單鏈表操作

2021-10-16 16:46:37 字數 2314 閱讀 4038

單鏈表的基本操作有:

單鏈表的銷毀,清空單鏈表,求單鏈表表長,判斷鍊錶是否為空,取值,查詢,插入,刪除,單鏈表的建立

1.單鏈表的定義:

typedef struct lnodelnode, *linklist;
定義鍊錶linklist l;

定義結點指標lnode *p或者linklist p;

2.用鏈式儲存結構儲存學生學號、姓名、成績的方式:

第一種方式:

typedef struct studentlnode, *linklist;
第二種方式:

typedef structelemtype;

typedef struct lnodelnode, *linklist;

3.單鏈表的初始化

步驟:1.生成新節點做頭節點,用頭指標l指向頭節點。

2.將頭結點的指標域置空。

status initlist_l(linklist &l)
4.判斷鍊錶是否為空

int listempty(linklist l)
5.單鏈表的銷毀 

(結束條件:l==null     迴圈條件l!=null或l)

status destroylist_l(linklist &l)

return ok;

}

6.清空鍊錶

鍊錶存在,但是沒有元素

反覆執行

p=q; q=q->next;

結束條件:p==null 迴圈條件:p!=null

status clearlist(linklist &l)

l->next = null;//頭節點指標域為空

return ok;

}

7.求鍊錶的表長

int listlength_l(linklist l)//返回l中資料元素的個數

return i;

}

8.取值--取單鏈表第i個元素的內容

status getelem_l(linklist l, int i, elemtype &e)

if(!p||j>i) return error;

e=p->data;

return ok;

}

9.查詢

時間效率o(n)

①按值查詢(返回位址)

lnode *locateelem_l(linklist l, elemtype e)

②按值查詢(返回序號)

lnode *locateelem_l(linklist l, elemtype e)

return j;

}

10.插入元素 

時間複雜度一般為o(1),但是實際操作中,要先查找到相應元素,所以時間複雜度為o(n)

status listinsert_l(linklist &l, int i, elemtype e)

if(!p||j>i-1)return error;

s = new lnode;

s -> data = e;

s -> next = p -> next;

p -> next = s;

return ok;

}

11.刪除結點

時間複雜度與插入相同。

status listdelete_l(linklist &l, int i, elemtype &e)

if(p->next||j>i-1)return error;

q = p->next;

p->next = q->next;

e = q->data;

delete q;

return ok;

}

12.單鏈表的建立

①頭插法

時間複雜度為o(n)

先插入最後乙個元素,最後插入第乙個元素。

void createlist_h(linklist &l, int n)

}

②尾插法

通過尾指標操作

時間複雜度為o(n)

void createlist_r(linklist &l,int n)

}

單鏈表操作

include include typedef struct node tag node 建立不帶頭結點的單鏈表 node createnode else p q scanf d n 函式體結束,q指標變數被釋放,不能通過head引數帶回到呼叫函式 要把head帶回到呼叫函式,要把它定義為指向指標的...

單鏈表操作

include stdio.h include malloc.h include define n 10 代表要處理的元素個數 可以誰使用者的意思修改 define ok 1 define overflow 0 typedef int elemtype typedef int status type...

單鏈表操作

這一次補上鍊表的注釋,是空閒的時候敲出來的,如果有錯,希望幫忙糾正 部分給出了詳細說明,這裡只選取了基本操作,因為更複雜的鍊錶操作太繁瑣,這裡就不寫了 如果有什麼不懂的地方,可以隨時詢問 include using namespace std typedef int elemtype struct ...