C語言實現帶頭雙向迴圈鍊錶的介面

2022-09-24 09:24:10 字數 3022 閱讀 3806

各函式功能如下

申請空間

listnode* buylistnode(ltdatatype x)

初始化listnode* listinit()

指定位置插入

void listinsert(listnode* pos, ltdatatype x)

頭插void listpushfront(listnode* phead, ltdatatype x)

尾插void listpushback(listnode* phead, ltdatatype x)

指定位置刪除

void listerase(listnode* pos)

頭刪void listpopfront(listnode* phead)

尾刪void listpopback(lis程式設計客棧tnode* phead)

查詢listnode* listfind(listnode* phead, ltdatatype x)

cur = cur->next;

} return null;

}判空int listempty(listnode* phead)

元素個數

int listsize(listnode* phead)

return size;

}鍊錶銷毀

void listdestory(listnode* phead)

free(phead);

phead = null;

}list.h

#pragma once

#define _crt_secure_no_warnings 1

#include

#include

#inclwww.cppcns.comude

typedef int ltdatatype;

typedef struct listnode

listnode;

//列印

void listprint(listnode* phead);

//申請空間

listnode* buylistnode(ltdatatype x);

//初始化

listnode* listinit();

//尾插

void listpushback(listnode* phead, ltdatatype x);

//頭插

void listpushfront(listnode* phead, ltdatatype x);

//尾刪

void listpopback(listnode* phead);

//頭刪

void listpopfront(listnode* phead);

//查詢

listnode* listfind(listnode* phead, ltdatatype x);

//插入

void listinsert(listnode* pos, ltdatatype x);

//刪除

void listerase(listnode* pos);

//空返回1,非空返回0

int listempty(listnode* phead);

//元素個數

int listsize(listnode* phead);

//鍊錶銷毀

void listdestory(listnode* phead);

list.c

#include "list.h"

listnode* buylistnode(ltdatatype x)

listnode* listinit()

//列印

void listprint(listnode* phead)

puts("\n------------------------------------------------\n");

}void listpushback(listnode* phead, ltdatatype x)

//頭插

void listpushfront(listnode* phead, ltdatatype x)

//尾刪

void listpopback(listnode* phead)

//頭刪

void listpopfront(listnode* phead)

//查詢

listnode* listfind(listnode* phead, ltdatatype x)

cur = cur->next;

} return null;

}//插入

void listinsert(listnode* pos, ltdatatype x)

//刪除

void listerase(listnode* pos)

//空返回1,非空返回0

int listempty(listnode* phead)

int listsize(listnode* phead)

return size;

}void listdestory(listnode* phead)

free(phead);

phead = null;

}test.c

#include "list.h"

void www.cppcns.comtestlist1()

int main()

鍊錶優點:

1.按需申請記憶體,需要存乙個資料,就申請一塊記憶體。不存在空間浪費。

2.任意位置o(1)時間內插入刪除資料

鍊錶缺點:

1.不支援下標的隨機訪問

2.快取命中率相對低。

順序表優點

1.按下標去進行隨機訪問

2.cpu快取記憶體命中率比較高

順序表缺點

1.空間不夠需要增容。(一定程式的效能消耗),可能存在一定的空間浪費

2.頭部或者中間插入刪除資料,需要挪動資料,效率比較低->o(n)

本文標題: c語言實現帶頭雙向迴圈鍊錶的介面

本文位址:

C語言實現帶頭雙向迴圈鍊錶

標頭檔案 list.h pragma once include include include 帶頭雙向迴圈鍊錶增刪查改 typedef int ltdatatype typedef struct listnode listnode listnode listcreate 建立煉表頭結點 void ...

C語言實現雙向迴圈鍊錶

list 雙向迴圈鍊錶,帶頭指標 struct list node 初始化頭指標 void list init head struct list node head 量表是否為空 是返回1,否返回0 int list is empty const struct list node head 鍊錶遍歷...

C語言實現雙向迴圈鍊錶

list 雙向迴圈鍊錶,帶頭指標 struct list node 初始化頭指標 void list init head struct list node head 量表是否為空 是返回1,否返回0 int list is empty const struct list node head 鍊錶遍歷...