鍊錶《Link》

2021-07-23 16:32:07 字數 1491 閱讀 5729

鍊錶(link)

使用線性表的不足之處:

1.如果長度不確定,使用線性表時,會很不方便,運算效率比較低。

3.當為乙個線性表分配儲存空間時,如果儲存空間滿的話,再次插入資料的話,會造成「上溢」錯誤。

這上面的三個不足,在鍊錶中都可以得到解決。

在鏈式儲存方式中,要求每個節點由兩部分組成:一部分用於存放資料元素值,成為資料域;一部分用於存放指標,稱為指標域。

線性鍊錶的插入:

1.利用棧取乙個節點,設該節點號為p,在

p節點中的資料域中插入元素為b,

v(p) = b;

2.在鍊錶中尋找包含元素為x的前乙個節點,設該節點的序號為q;

3.將節點p插入節點

q之後;

4.使節點p指向包含元素

x的節點,即

next(p

)= next(q

);5.使節點q的指標域內容改為指向節點p,即

next(q

)=p;6.插入完成

線性鍊錶的刪除: q

,則包含元素的節點序號為:

p=next(q

);2.將節點q後的節點

p從線性表中刪除,即讓節點

q的指標指向包含元素

x的節點

p的指標指向的節點,即

next(q

)=next(p

);3.刪除完成。

**:

#include

using namespace std;

template

struct node ;

template

class link ;

template

link::link()

template

void link::prt_link()

/* while(p != null)

*/ dowhile(p != null);

return ; }

template

void link::ins_link(type x,type b)

if(head->d == x)

q = head;

while((q->next != null)&&(((q->next)->d) != x))

} template

type link::del_link(type x)

if((head->d) == x)

q = head;

while((q->next != null)&&(((q->next)->d) != x))

q= q->next;

if(q->next == null)

p = q->next;

q->next = p->next;

delete p;  

return 1; }

#include"link.h"

int main()

link 鍊錶操作

link 鍊錶結構 之前是操作字串string 鍊錶 頭元素,後面乙個乙個的指向後面的元素。redis內部實現了鍊錶的結構。鍊錶的頭尾,從乙個元素找到另外的元素。鍊錶的名字也是乙個key。flushdb 則資料全部沒了。lpush keyvalue 作用 把值插入到鏈結頭部 r1 0 lpush c...

redis03 link 鍊錶操作

link 鍊錶結構 之前是操作字串string 鍊錶 頭元素,後面乙個乙個的指向後面的元素。redis內部實現了鍊錶的結構。鍊錶的頭尾,從乙個元素找到另外的元素。鍊錶的名字也是乙個key。flushdb 則資料全部沒了。lpush keyvalue 作用 把值插入到鏈結頭部 r1 0 lpush c...

理論小知識 link鍊錶 lpush

lpush key value value 將乙個或多個值 value 插入到列表 key 的表頭 l指left 如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭 如說,對空列表 mylist 執行命令 lpush mylist a b c 列表的值將是 c b a...