實踐之單鏈表

2021-10-09 10:46:53 字數 4350 閱讀 7684

#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類是最基本的儲存單位,乙...