一般線性鍊錶類的C 實現

2021-04-14 07:27:54 字數 2588 閱讀 2860

以下的c++類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。

標頭檔案:linklist.h

typedef struct lnode lnode, *plinklist;

class linklist ;

cpp檔案:linklist.cpp

#include

#include "linklist.h"

linklist::linklist()

linklist::~linklist()

}//初始化,分配乙個頭節點。

bool linklist::initlist()

m_plist->next = null;

return true;

}//銷毀鍊錶。

bool linklist::destroylist()

delete m_plist;

return true;

}//判斷鍊錶是否為空。若為空,返回true,否則返回false。

bool linklist::isempty()

return false;

}//返回鍊錶的中當前節點數。

int linklist::getlength()

//將鍊錶清空,釋放當前所有節點。

bool linklist::clearlist()

lnode *ptemp = null;

while (m_plist->next != null)

m_listlength = 0;

return true;

}//將position指定的節點內的資料設定為newdata。

//第乙個有效節點的position為1。

bool linklist::setnodedata(int position, int newdata)

ptemp->data = newdata;

return true;

}//得到指定位置節點的資料。

//節點索引從1到listlength。

bool linklist::getnodedata(int position, int &data)

data = ptemp->data;

return true;

}//在鍊錶中插入乙個節點。

//插入的位置由beforewhich指定,新節點插入在beforewhich之前。

//beforewhich的取值在1到listlength+1之間。

bool linklist::insertnode(int beforewhich, int data)

if (!(getnode(beforewhich - 1, &ptemp)))

lnode *newnode = new lnode;

newnode->data = data;

newnode->next = ptemp->next;

ptemp->next = newnode;

m_listlength++;

return true;

}//刪除乙個指定的節點。

//節點位置由position指定。

//positon的值從1到listlength。

//若煉表為空或指定的節點不存在則返回false。

bool linklist::deletenode(int position)

lnode *ptemp = null;

if (!(getnode(position - 1, &ptemp)))

lnode *pdel = null;

pdel = ptemp->next;

ptemp->next = pdel->next;

delete pdel;

m_listlength--;

return true;

}//得到指定位置節點的指標。

bool linklist::getnode(int position, lnode **node)

if (curpos != position)

*node = ptemp;

return true;

}//定位與指定資料相等的資料節點。

//如果在當前鍊錶中已經存在該資料則返回該資料節點的索引號。

//若不存在這樣的節點則返回0。

//節點索引從0開始到listlength。

int linklist::locateelem(int elem)

if (ptemp == null)

return curindex;}/*

int main()

if (l.setnodedata(3, 50)) else

for (i = 1; i <= l.getlength(); i++)

if (l.deletenode(4)) else

for (i = 1; i <= l.getlength(); i++)

cout << l.locateelem(50) << endl;

return 0;}*/

一般線性鍊錶類的C 實現

以下的c 類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。標頭檔案 linklist.h typedef struct lnode lnode,plinklist cl...

C 一般線性鍊錶類的C 實現

以下的c 類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。標頭檔案 linklist.h typedef struct lnode lnode,plinklist cl...

C語言實現一般線性表的鏈式儲存

c語言實現一般線性表的順序儲存,以下是在vs2013編譯通過的,歡迎討論。有關資料結構的概念可看我的另一篇文章 ifndef linklist h define linklist h typedef void linklist typedef struct tag linklistnode link...