線性表 鏈式儲存結構之單鏈表

2021-06-20 21:10:38 字數 1345 閱讀 3126

#ifndef linklist_h

#define linklist_h

#include #include #include template class node

node(const elemtype &_data) : data(_data), next(null) {}

node(const elemtype &_data, node*_next) : data(_data), next(_next) {}

~node() {}

public:

elemtype data;

node*next;

};template class singlelist

~singlelist()

if (head_node)

}public:

void initlist()

bool listempty()

void clearlist()

head_node->next = null;

count = 0;

}void getelem(uint32_t i, elemtype *e) else

*e = p->data;}}

uint32_t locateelem(elemtype e)

p = p->next;

}fprintf(stderr, "not in this list\n");

return -1;

}void listinsert(uint32_t i, elemtype *e) else

q->next = p->next;

p->next = q;

}++count;

}void listdelete(uint32_t i, elemtype *e)

node*p, *q;

p = head_node;

for (uint32_t j = 0; j < i; ++j)

q->next = p->next;

*e = p->data;

--count;

delete p;

}uint32_t listlength(void)

private:

int count;

node*head_node;

};#endif

後記:測試的時候,發現刪除乙個元素時,會導致整個鍊錶被破壞了,在紙上畫了半天,百思不得其解,最終將delete換成free,發現結果正確了,想到delete與free的區別,就意識到錯哪了,竟然在node的析構函式中,隨手將next指標delete掉了。細節決定一切!

線性表 鏈式儲存結構之雙鏈表

該文章主要介紹線性表的鏈式儲存運算以及相關運算 雙鏈表。標頭檔案 dlinklist.h template struct dlinklist 雙鏈表結點型別 template class dlinklistclass 雙鏈錶類 原始檔 dlinklist.cpp include include dl...

線性表 鏈式儲存結構之迴圈雙鏈表

該文章主要介紹線性表的鏈式儲存運算以及相關運算 迴圈雙鏈表。標頭檔案 cdlinklist.h template struct dlinklist 迴圈雙鏈表結點型別 template class cdlinklistclass 迴圈雙鏈錶類 原始檔 cdlinklist.cpp include i...

線性表鏈式儲存結構

include include 線性表鏈式儲存結構 typedef struct lnodelnode,linklist int initlist linklist l 初始化 int endinsert linklist l,int e p next s return 1 末尾插入元素 int g...