C 線性鍊錶

2021-06-22 19:15:40 字數 1905 閱讀 3119

鍊錶,不能像陣列一樣,只要知道下標就能訪問,而是,乙個個的順著鍊子訪問。

例:單鏈表的節點類模版(lb1.h)

templateclass node				//節點類

;//類的實現部分

template//建構函式,初始化資料和指標成員

node::node(const t& item,node*ptrnext):data(item),next(ptrnext)

{}//返回私有的指標成員

templatenode*node::nextnode()const

//返回位址,因為*next是私有的。

//在當前節點之後插入乙個節點p

templatevoid node::insertafter(node*p)

//刪除當前節點的後繼結點,並返回其位址

templatenode*node::deleteafter(void)

例:實現鍊錶操作函式(lb2.h)

#ifndef node_library

#define node_library

#include#include//標頭檔案實現的是單節點的操作,本函式實現整個鍊錶的操作

#include"單鏈表的節點類模版.h"

//生成節點

templatenode*getnode(const t&item,node*nextptr=null)

}//查詢節點

templateint find(node*head,t&item,node*&prevptr)

}//在表頭插入節點

templatevoid insertfront(node*head,t item)

//head指向getnode,getnode的next指標指向head的next指標進行傳遞。

//在表尾新增節點

templatevoid insertrear(node*&head,const t&item)

}//刪除鍊錶的頭節點

templatevoid deletefront(node*&head)

}//刪除鍊錶中第乙個資料域等於key的節點

templatevoid delete(node*&head,t key)

if(currptr!=null) }

//在有序鍊錶中插入乙個節點

templatevoid insertorder(node*&head,t item)

if(prevptr==null)

insertfront(head,item);

else }

//清空鍊錶-產出鍊錶中所有節點

templatevoid clearlist(node*&head)

head=null;

}#endif //node_library

例:從鍵盤輸入10個整數,用這些整數值作為節點資料,生成乙個鍊錶,按順序輸出鍊錶中節點數值,

然後從鍵盤輸入乙個待查詢整數,在鍊錶中查詢該整數,若找到則刪除該整數所在節點,如果出現

多次,全部刪除,然後輸出刪除節點以後的鍊錶。在程式結束之前清空鍊錶。

#include#include"lb1.h"

#include"lb2.h"

void main(void)

cout<<"list:";

printlist(head,nonewline);

cout<>key;

prevptr=head;

while(find(head,key,prevptr)!=null)

cout<<"list:";

printlist(head,nonewline);

cout

}

c 線性鍊錶程式

list.h include include typedef char data struct linked list typedef struct linked list element typedef element link 編寫乙個函式建立乙個鍊錶,這函式返回乙個指標,指向被建立的鍊錶的頭部...

C 實現線性鍊錶

templatestruct lnode templateclass linklist templatelinklist linklist templatelinklist linklist templatebool linklist initlist m plist data null m pli...

C 實現線性表(鍊錶描述)

本文使用c 實現了乙個線性表 陣列描述 該程式由三個檔案構成,第一部分是標頭檔案,標頭檔案定義了乙個鍊錶的節點的結構體,同時在該結構體的基礎上定義了乙個線性表類,該抽象類中定義了絕大部分線性表的成員函式,其中包括 確定線性表是否為空 確定線性表中資料的數目 新增乙個資料 按乙個給定索引查詢其對應的元...