c語言實現鏈式儲存

2021-08-29 02:53:18 字數 3002 閱讀 8409

.h

#ifndef linklist_h

#define linklist_h

#define _crt_secure_no_warnings

#include

#include

#include

//節點結構體

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);

//獲得鍊錶長度

int size_linklist(linklist* list);

//列印

void print_linklist(linklist* list, printlinknode print);

//查詢

int findbyval_linklist(linklist* list, void* data);

//返回第乙個節點

void* front_linklist(linklist* list);

//釋放空間

void freespace_linklist(linklist* list);

#endif

.c

#include "linklist.h"

//操作

//初始化

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* ptem = list->head;

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

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

//插入先掛後面

newnode->next = ptem->next;

ptem->next = newnode;

list->size++;

}

//指定位置刪除

void removebypos_linklist(linklist* list, int pos)

if (pos<0 || pos >= list->size)

linknode* ptem = list->head;

//找位置的前乙個節點

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

linknode* newnode = ptem->next;

ptem->next = newnode->next;

free(ptem);

list->size--;

}

//獲得鍊錶長度

int size_linklist(linklist* list)

//列印

void  print_linklist(linklist* list, printlinknode print)

linknode* ptem = list->head->next;

while (null != ptem)

return ptem;

}//查詢

int findbyval_linklist(linklist* list, void* data)

if (null == data)

linknode* ptem = list->head;

int i = 0;

while (null != ptem)

i++;

ptem = ptem->next;

}return i;

}

//返回第乙個節點

void* front_linklist(linklist* list)

//釋放空間

void freespace_linklist(linklist* list)

linknode* ptem = list->head;

linknode* newnode = null;

while (null != ptem)

list->size = 0;

free(list);

}

佇列的鏈式儲存(C語言實現)

是一種先進先出的線性表,只允許在表的一端進行插入,而在另一端刪除元素。和日常的排隊一致。允許插入的一端叫做隊尾,允許刪除的一端叫做隊頭。尾進頭出 typedef struct qnode qnode,qptrl typedef struct linkqueue 初始化佇列 linkqueue ini...

棧的鏈式儲存結構(C語言實現)

1 include 2 include 3 4 define ok 1 5 define err 2 6 define true 1 7 define false 0 89 typedef int status 定義函式返回的狀態,ok err 10 typedef char datatype 定義...

C 語言實現鏈式棧

鏈式棧是一種資料儲存結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在於它能夠克服用陣列實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指標空間用來存放指標域。棧是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底 push 最後的資料在棧頂 ...