#define _crt_secure_no_warnings
#include
#include
#include
#include
"linklist.h"
using
namespace std;
//自定義資料型別
typedef
struct person
person;
//列印函式
void
myprint
(void
* data)
intmain
(void);
person p2 =
; person p3 =
; person p4 =
; person p5 =
;//插入
insert_linklist
(list,0,
&p1)
;insert_linklist
(list,0,
&p2)
;insert_linklist
(list,0,
&p3)
;insert_linklist
(list,0,
&p4)
;insert_linklist
(list,0,
&p5)
;//列印
print_linklist
(list, myprint)
;//刪除
removebypos_linklist
(list,3)
; person* ret=
(person*
)front_linklist
(list)
; cout <<
"pname="
<< ret-
>name <<
" "<<
"page="
<< ret-
>age <<
" "<<
"pscore="
<< ret-
>score << endl;
//銷毀鍊錶
freespace_linklist
(list)
;system
("pause");
return0;
}
#pragma once
#ifndef linklist_h
#define linklist_h
typedef
struct linknode linknode;
typedef
struct linklist linklist;
typedef
void
(*printlinknode)
(void*)
;//初始化鍊錶
linklist*
init_linklist()
;//指定位置插入
void
insert_linklist
(linklist* list,
int pos,
void
* data)
;//刪除指定位置的值
void
removebypos_linklist
(linklist* list,
int pos)
;//獲得鍊錶長度
intsize_linklist
(linklist* list)
;//查詢
intfind_linklist
(linklist* list,
void
* data)
;//返回第乙個節點位置
void
*front_linklist
(linklist* list)
;//列印鍊錶節點
void
print_linklist
(linklist* list, printlinknode print)
;//釋放鍊錶記憶體
void
freespace_linklist
(linklist* list)
;#endif
// list.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//#include
#include
"linklist.h"
#include
#include
using
namespace std;
//初始化鍊錶
linklist*
init_linklist()
//指定位置插入
void
insert_linklist
(linklist* list,
int pos,
void
* data)
if(data ==
null
)//友好處理
if(pos<
0|| pos>list-
>size)
//建立新節點
linknode* newnode =
(linknode*
)malloc
(sizeof
(linknode));
newnode-
>data = data;
newnode-
>next =
null
;//找節點
linknode* pcurrent = list-
>head;
for(
int i =
0; i < pos; i++
)//新節點入鍊錶
newnode-
>next = pcurrent-
>next;
pcurrent-
>next = newnode;
list-
>size++;}
;//刪除指定位置的值
void
removebypos_linklist
(linklist* list,
int pos)
if(pos<
0|| pos>=list-
>size)
//查詢刪除節點的前乙個節點
linknode* pcurrent = list-
>head;
for(
int i =
0; i < pos; i++
)//換出刪除節點
linknode* pdel = pcurrent-
>next;
pcurrent-
>next = pdel-
>next;
//釋放記憶體
free
(pdel)
; list-
>size--;}
//獲得鍊錶長度
intsize_linklist
(linklist* list)
//查詢
intfind_linklist
(linklist* list,
void
* data)
if(data ==
null
)//遍歷查詢
linknode* pcurrent = list-
>head-
>next;
int i =0;
while
(pcurrent !=
null
) i++
; pcurrent = pcurrent-
>next;
}return i;
}//返回第乙個節點位置
void
*front_linklist
(linklist* list)
//列印鍊錶節點
void
print_linklist
(linklist* list, printlinknode print)
}//釋放鍊錶記憶體
void
freespace_linklist
(linklist* list)
//輔助指標變數
linknode* pcurrent = list-
>head;
while
(pcurrent!=
null
)//釋放鍊錶記憶體
list-
>size =0;
free
(list)
;}
單鏈表之排序單鏈表
package list public class sortedsinglylist extends singlylist 將values陣列中的所有物件按值大小插入 public sortedsinglylist t values 過載深拷貝,由單鏈表構建排序單鏈表 public sortedsi...
單鏈表的簡單實踐
1.演算法描述 資料結構與演算法分析c 版 3.11 實現乙個有序單鏈表,要求能返回鍊錶大小,列印鍊錶,檢測x是否在鍊錶 在則刪除,否則新增 2.實現 list.h ifndef list h define list h include templatestruct node templatecla...
單鏈表的學習和實踐
鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標實現的。鍊錶由一系列結點組成,結點可以在執行時動態生成,而且由於沒有閒置的記憶體,因此空間效率比陣列高。其插入操作可達到o 1 複雜度,但是查詢或者訪問特定的結點複雜度是o n 節點node類是最基本的儲存單位,乙...