資料結構學習筆記3 單鏈表

2021-06-19 08:09:32 字數 1961 閱讀 7588

1.

相對於順序表的線性儲存,順序表的鏈式儲存(單鏈表為例)最突出的優點:

對元素的插入刪除非常快;

順序表的線性儲存插入和刪除需要移動大量的元素,操作速度緩慢;而獲取元素的速度相對而言比較快;

單鏈表剛好和他相反,插入和刪除很快,獲取元素速度比不上線性表;

2.單鏈表的形式:

3.單鏈表的插入和刪除:

4.除了插入和刪除的其他操作:

建立單鏈表、銷毀單鏈表、清空單鏈表、獲取單鏈表長度等等;

5.**實現:

linklist.h實現**:

#include #include #include "linklist.h"

typedef struct _tag_linklist

tlinklist; //定義煉表頭結點,注意header 變數一定要放在length之前

linklist * linklist_create()

return ret;

}void linklist_destory(linklist * list)

void linklist_clear(linklist * list)

return ;

}int linklist_length(linklist * list)

return ret;

}int linklist_insert(linklist * list, linklistnode * node, int pos)

node->next = current->next;

current->next = node;

tlist->length++; }

return ret;

}linklistnode * linklist_get(linklist * list, int pos)

ret = current->next; }

return ret;

}linklistnode * linklist_delete(linklist * list, int pos)

ret = current->next;

current->next = ret->next;

tlist->length--; }

return ret;

}

linklist.h實現**:

#ifndef _linklist_h

#define _linklist_h

typedef void linklist;

typedef struct _tag_linklistnode linklistnode;

struct _tag_linklistnode

;linklist * linklist_create();

void linklist_destory(linklist * list);

void linklist_clear(linklist * list);

int linklist_length(linklist * list);

int linklist_insert(linklist * list, linklistnode * node, int pos);

linklistnode * linklist_get(linklist * list, int pos);

linklistnode * linklist_delete(linklist * list, int pos);

#endif

資料結構學習筆記 單鏈表

陣列優勢在於快速定位元素,對於讀操作多,寫操作少的場景,陣列更合適 鍊錶優勢在於快速的插入和刪除操作,如果頻繁的在尾部刪除和插入元素,用鍊錶更好 package com.cc.node public class nodedemo1 private node head private node las...

資料結構學習筆記 單鏈表

準備知識在另一篇部落格 單鏈表預備知識 建立單鏈表 頭插法 每次都是從頭結點插入乙個元素的方法,所以它是倒序的。struct lnode 建立結點結構體,由資料域和指標域組成 linknode void createlistf linknode l,elemtype a,int n 從陣列a中讀取資...

資料結構學習記錄3 單鏈表

二.因為順序表是一段固定的空間,所以會存在空間的時候率的一些問題。如果能通過某種方式,動態的將乙個又乙個的節點串接起來,那就可能會好很多,所以,在這種情況下,我們想出了單鏈表這種資料結構。對於單鏈表,我們肯定還是需要有,增刪改查這幾種基礎函式。而且,除了節點的定義,我們除了儲存資料,應該還需要包括乙...