線性表的鏈式儲存及其介面函式C 類實現

2021-08-27 17:12:09 字數 3782 閱讀 1830

首先通過結構體建立每個節點

struct node	//鍊錶節點

;

class linklist //鍊錶類

linklist(int capacity_num)//帶引數的建構函式

int linklist_insert(linklist* ptr,int pos,int member);//插入元素

int linklist_erase(linklist* ptr,int pos);//刪除元素

int linklist_getlength(linklist* ptr);//獲取鍊錶長度

int linklist_getcapacity(linklist* ptr);//獲取鍊錶容量

void linklist_display(linklist* ptr);//順序輸出鍊錶中的每個元素

void linklist_increaselength(linklist* ptr);//增加元素的個數

void linklist_decreaselength(linklist* ptr);//減少元素的個數

int linklist_getmember(linklist* ptr,int pos);//獲取某位置上的元素

~linklist()//析構函式

};

每次最難的就是插入,插入的是第乙個和最後乙個時比較麻煩

int linklist::linklist_insert(linklist* ptr,int pos,int member)

else //在中間插入

if(ptr->linklist_getlength(ptr) - 1 < pos)

current->ptrnext = ptr_node;

ptr->linklist_increaselength(ptr);

return 0;

}else if(pos == 0) //空鍊錶,貌似跟上面的重複了,額,不影響執行

else

ptr_node->ptrnext = current->ptrnext;

current->ptrnext = ptr_node;

ptr->linklist_increaselength(ptr);

return 0;}}

}

之後就是刪除了

int linklist::linklist_erase(linklist* ptr,int pos)

current->ptrnext = next->ptrnext;

ptr->linklist_decreaselength(ptr);

}}

刪除比插入簡單多了。。。

線性表的鏈式儲存具體實現和完整測試**如下:

#includeusing namespace std;

struct node //鍊錶節點

;class linklist //鍊錶類

linklist(int capacity_num)//帶引數的建構函式

int linklist_insert(linklist* ptr,int pos,int member);//插入元素

int linklist_erase(linklist* ptr,int pos);//刪除元素

int linklist_getlength(linklist* ptr);//獲取鍊錶長度

int linklist_getcapacity(linklist* ptr);//獲取鍊錶容量

void linklist_display(linklist* ptr);//順序輸出鍊錶中的每個元素

void linklist_increaselength(linklist* ptr);//增加元素的個數

void linklist_decreaselength(linklist* ptr);//減少元素的個數

int linklist_getmember(linklist* ptr,int pos);//獲取某位置上的元素

~linklist()//析構函式

};int linklist::length = 0;

int linklist::capacity = 0;

int linklist::linklist_getmember(linklist* ptr,int pos)

return next->data;

}void linklist::linklist_decreaselength(linklist *ptr)

int linklist::linklist_erase(linklist* ptr,int pos)

current->ptrnext = next->ptrnext;

ptr->linklist_decreaselength(ptr); }}

int linklist::linklist_getcapacity(linklist *ptr)

void linklist::linklist_increaselength(linklist* ptr)

int linklist::linklist_getlength(linklist* ptr)

void linklist::linklist_display(linklist* ptr)//輸出每個元素

coutlinklist_getcapacity(ptr))//鍊錶已滿

else //在中間插入

if(ptr->linklist_getlength(ptr) - 1 < pos)

current->ptrnext = ptr_node;

ptr->linklist_increaselength(ptr);

return 0;

}else if(pos == 0) //空鍊錶,貌似跟上面的重複了,額,不影響執行

else

ptr_node->ptrnext = current->ptrnext;

current->ptrnext = ptr_node;

ptr->linklist_increaselength(ptr);

return 0;

}} }

int main()

for(int i = 0; i < n; i++)

cout<

linklist->linklist_erase(linklist,3);

cout<

cout<

return 0;

}

測試結果如下:

線性表的鏈式儲存及其介面函式C 類實現

首先通過結構體建立每個節點 struct node 鍊錶節點 性表的類中,定義了一些對線性表的常用操作 class linklist 鍊錶類 linklist int capacity num 帶引數的建構函式 int linklist insert linklist ptr,int pos,int...

線性表的鏈式儲存及其基本操作

include pch.h include include include include typedef struct link link error 初始化操作由 case 標籤跳過 case 下 加 初始化鍊錶 link initlink 帶頭結點的初始化 link createlistf i...

線性表的鏈式儲存

此方法雖然簡單,但是真寫起來太複雜了。線性表的鏈式儲存 include include struct lnode 線性表的初始化 void init l lnode l 線性表的後插建立 void create l1 lnode l n next null 線性表的後插建立 void create ...