線性鍊錶的實現和操作

2021-06-14 18:07:34 字數 1519 閱讀 7302

本次實現的是線性鍊錶的操作,和上次單鏈表不同在於,上次只實現了表頭的插入和刪除,這次是對線性表的整體實現插入和刪除

廢話不多說,直接看**,linked_llist.h

#includeusing namespace std;

template struct node;

template class linked_llist;

template linked_llist::linked_llist()

template void linked_llist::prt_linked_llist()while(p!=null);

return;

}template void linked_llist::ins_linked_llist(t x,t b)//empty

if(head->d==x)//first node

q=head;

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

p->next=q->next;q->next=p;

return;

}template int linked_llist::del_linked_llist(t x)

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

if(q->next==null) return 0;

p=q->next;q->next=p->next;

delete p;

return 1;

}

舉例說明上面操作,linked_llist_main.cpp

#include"linked_llist.h"

int main(){

linked_llists;

cout<<"1 ouput the element"《這次圖就不截了,不過簡單的說明一下,對於鍊錶最基本的操作,插入和刪除。

關於插入:

首先,插入,要明白是要把什麼東西插入到什麼位置,所以2個引數,x和b,在x前面插入b。

位置就有3種情況:

1.如果本來就是空鍊錶?那麼此時b這個元素自然是表頭,head和p同時指向這個位置。

2.假如是乙個頭結點?那麼就是上次介紹的單鏈表,p指向head,再由head指到p就可以了,(指向:p->next=head,指到:head=p)

3.如果是中間的某個結點?首先找到要插入位置的前乙個節點,如何找,上面的while迴圈。

然後,就是就是連線進去,也就是p指向q的指向,q的指向再到p,來回就是這樣的。

關於刪除:

1.要刪除什麼?2.先說到底有沒有這個元素?

所以3種情況:

1.如果是空表?那麼就沒什麼好刪除的,退出;

2.如果是乙個元素頭結點?和上面的是乙個道理

3.如果是中間的某個元素?

3.1.假如遍歷完,沒有?那自然不用刪除

3.2.發現元素,這個元素的前乙個結點為q,自己為p,所以q指向到p的指向,釋放p,就可以了。

線性鍊錶的操作

include include include define error 0 define ok 1 define equal 1 define overflow 1 define list init size 100 define listincrement 10 struct stustu 50...

線性鍊錶基本操作實現(C C )

函式結果狀態 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define null 0 define overflow 2 include include include using names...

線性表的陣列實現和鍊錶實現

線性表的順序儲存實現 線性表用陣列來實現 typedef struct polynode polynomial struct polynode typedef struct lnode list struct lnode struct lnode l list ptrl 線性表結構的指標 訪問下標為...