資料結構之單向鍊錶

2021-09-02 20:09:54 字數 3516 閱讀 4753

結構體+指標 ===> 更強大的資料結構

分類:

1、頭指標式鍊錶 ====> 不實用很麻煩

2、頭結點式鍊錶====> 常用

節點:typedef int data;

常用操作:1建立

2摧毀3增加

4刪除5查詢

6修改7逆序

#ifndef  _linklist_h_

#define _linklist_h_

typedef

enum

bool;

typedef

int data;

typedef

struct _node

node;

typedef

struct _list

list;

//建立空鍊錶

list* creat ();

//摧毀鍊錶

//[in]list : 需要摧毀的鍊錶

void

destroy

(list*list)

;//插入資料:頭插

// [in]list : 要插入的單鏈表

// [in]data : 要插入的資料

bool insert_head

(list*list,data data)

;//插入資料:尾插

// [in]list : 要插入的單鏈表

// [in]data : 要插入的資料

bool insert_tail

(list*list,data data)

;//插入資料: 按位置插入

// [in]list : 要插入的單鏈表

// [in]pos : 要插入的位置

// [in]data : 要插入的資料

bool insert_pos

(list*list,

int pos,data data)

;//刪除資料: 按位置刪除

// [in]list : 要插入的單鏈表

// [in]pos : 要插入的位置

bool delete_pos

(list*list,

int pos)

;//刪除資料: 按資料刪除

// [in]list : 要插入的單鏈表

// [in]data : 要插入的資料

bool delete_data

(list*list,data data)

;//單向鍊錶逆序

bool reverse

(list *list)

;//列印

void

display

(list*list)

;#endif

// _linklist_h_

#include

#include

#include

"linklist.h"

//建立空鍊錶

list* creat (

) list->head =

(node*

)malloc

(sizeof

(node)

/sizeof

(char))

;if(null

== list->head )

list->head->next =

null

;return list;

}//摧毀鍊錶

void

destroy

(list*list)

free

(list->head )

;free

(list);}

bool insert_head

(list*list,data data)

new_node ->data = data;

new_node ->next = list->head->next;

list->head->next = new_node;

return true;

}bool insert_tail

(list*list,data data)

new_node ->data = data;

new_node ->next =

null

;//找到最後指向空的節點

node *tmp = list->head;

//指向頭結點

while

(tmp->next)

tmp->next =new_node;

return true;

}bool insert_pos

(list*list,

int pos,data data)

node *tmp =list->head;

//指向頭結點

//找到指點位置的插入的前乙個節點

int i;

for(i=

0;i1;i++)}

node->next = tmp->next;

tmp->next = node;

node->data = data;

return true;

}bool delete_pos

(list*list,

int pos)

} node *pos_node =tmp->next;

tmp->next =pos_node->next;

free

(pos_node)

;return true;

}bool delete_data

(list*list,data data)

tmp = tmp->next;

}return false;

}bool reverse

(list *list)

//逆序後的最後乙個節點指向null

list->head->next->next =

null

;//頭結點指向逆序後的第乙個節點

list->head->next = pre;

return true;

}void

display

(list*list)

printf

("\n");

}

資料結構之單向迴圈鍊錶

基於單向鍊錶 將最後乙個節點 指向 頭結點 ifndef cirlinklist h define cirlinklist h typedef enum bool typedef int data typedef struct node node typedef struct list list 建...

資料結構 單向鍊錶

鍊錶結構的資料格式儲存 include stdafx.h 把這行放在最開始。include includeusing namespace std typedef struct data typedef struct node 這裡與上面的不同是多了node,注意如果沒有這個node,下面的struc...

資料結構(單向鍊錶)

ifndef linklist h define linklist h 鍊錶節點 template class linklistdata linklistdata linklistdata 獲取資料 t getdata public t data 資料 template class linklist...