鍊錶,不能像陣列一樣,只要知道下標就能訪問,而是,乙個個的順著鍊子訪問。
例:單鏈表的節點類模版(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 實現了乙個線性表 陣列描述 該程式由三個檔案構成,第一部分是標頭檔案,標頭檔案定義了乙個鍊錶的節點的結構體,同時在該結構體的基礎上定義了乙個線性表類,該抽象類中定義了絕大部分線性表的成員函式,其中包括 確定線性表是否為空 確定線性表中資料的數目 新增乙個資料 按乙個給定索引查詢其對應的元...