如果要看c語言的請轉到
table.cpp檔案
#include "table.h"
table::~table()
// 鍊錶初始化
void table::listinit(list_data *head)
// 資料報初始化
void table::datainit(data *data)
// 判斷鍊錶是否為空
bool table::listempty(list_data *head)
// 求鍊錶長度
int table::listlength(list_data *head)
return i;
}// 返回head鍊錶pos節點的資料
list_data *table::listposdata(list_data *head, int pos)
return node;
}// 在尾部刪除元素
void table::listdeleteend(list_data *head)
delete p;
p = null;
ptemp->pnext = null;
}}// 在頭部刪除元素
void table::listdeletehead(list_data *head)
}// 刪除鍊錶head中第pos個節點的資料
void table::listdeletepos(list_data *head, int pos)
else
p->pnext = ptemp->pnext;
delete ptemp;
ptemp = null;
}}// 頭新增
void table::listaddhead(list_data *head, data data)
newnode->pnext = p->pnext;
p->pnext = newnode;
}// 尾巴新增
void table::listaddend(list_data *head, data data)
else
p->pnext = newnode;
}}// 任意改動
void table::listchangepos(list_data *head, data data, int pos)
// 銷毀鍊錶
void table::listfree(list_data *head)
head->pnext = null;
}
table.h 檔案
#ifndef _table_h_
#define _table_h_
#include #include #include #include #include using namespace std;
typedef unsigned char u8;
typedef struct listdata;
typedef struct task list_data;
class table
;#endif
測試用main.cpp檔案
#include "table.h"
list_data *head = new list_data;
table list;
void add_head()//往頭新增資料 }
void add_end()//往尾部加資料 }
void printf_data(list_data *head)
printf("\n");
}int main(int argc, char const *ar**)
else
printf("**********鍊錶長度*****====\n");
printf("len = %d\n",list.listlength(head));
printf("*****===往頭部新增資料*****==\n");
add_head();
printf_data(head);
printf("*****===往尾部新增資料*****==\n");
add_end();
printf_data(head);
printf("**********鍊錶長度*****====\n");
printf("len = %d\n",list.listlength(head));
printf("*****===任意改動*****==\n");
data node;
node.num = 10;
list.listchangepos(head, node, 2);
printf_data(head);
printf("*****===刪除鍊錶head中第2個節點的資料*****==\n");
list.listdeletepos(head,2);
printf_data(head);
printf("**********=獲取第三個節點資料**********\n");
list_data *data = list.listposdata(head,3);
printf("num=[%d]\n",data->data.num);
printf("**********==尾部刪除*****====13\n");
list.listdeleteend(head);
printf_data(head);
printf("**********==頭部刪除*****====13\n");
list.listdeletehead(head);
printf_data(head);
printf("**********==銷毀鍊錶*****====13\n");
list.listfree(head);//銷毀鍊錶
printf_data(head);
printf("**********鍊錶長度*****====\n");
printf("len = %d\n",list.listlength(head));
}
對於單向鍊錶的10幾種常用演算法 c語言
如果要看c 版本的,請轉 list.c檔案如下 include list.h 返回head鍊錶pos節點的位置 link list moov pos link head,int pos 求鍊錶長度 int list length link head return i 判斷鍊錶是否為空 bool li...
10單向鍊錶(slist)
1 slist概述 slist並不在標準規格之內,sllist和list的主要差別在於,slist的迭代器屬於單向的forward iterator,而list的迭代器屬於雙向的bidirectional iterator。由於slist沒有任何方便的辦法可以回頭定出前乙個位置,必須從頭找起,所以對...
演算法 反轉單向鍊錶
廢話少說,直接上 單向鍊錶模型,如下 public class listnode override public string tostring sb.return sb.tostring 方法一 遍歷元素,依此反轉位置private static listnode reversenode1 lis...