鍊錶(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...