创建头文件,源代码文件等内容讲解
树图思维导图提供 链表组件化思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 链表组件化思维脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:b6182e239d41b528d5420fa5834a0e1c
链表组件化思维导图模板大纲
datatype.h 头文件用于规划自定义类型
linkedlist.h 头文件用于规划增删改查等数据维护功能
collections.h 头文件用于规划排序查找等数据管理功能
LinkedList.cpp 和 Collections.cpp 来定义实现声明的函数功能
useLinkedList.cpp 和 useCollections.cpp 用于测试驱动开发组件
创建链表,向链表中添加数据
PLinkedList list = createLinkedList(); add(list, "apple"); add(list, "orange"); add(list, "grape"); add(list, "banana"); add(list, "peach");
向链表某下标位置插入数据
测试用例
insert(list, 2, "red");//中间位置插入 insert(list, 0, "blue");//头部位置插入 insert(list, 8, "green");//尾部位置插入
按下标号删除节点
测试用例
const char*bssj =(const char*)removeIndex(list,2);
修改节点存储的值
测试用例
set(list, 2, "GRAPE");
下标式遍历节点
测试用例
for (int i = 0; i < size(list); i++) { const char* data = (const char*)get(list, i); printf("%s\n", data); }
迭代式遍历节点
测试用例
iterator(list); while (hasNext(list)) { const char* data = (const char*)next(list);printf("%s\n", data); }
寻找数据所在下标
定义Compare类型的函数指针
int my_strcmp(void* s1, void* s2) { const char* ps1 = (const char*)s1; const char* ps2 = (const char*)s2; return strcmp(ps1, ps2); }
测试用例
char str[] = "peach"; printf("peach的下标:%d\n", indexOf(list, str, my_strcmp));
删除第一个满足的数据所在下标
测试用例
removeData(list, "peach", my_strcmp);
清空链表、释放链表
测试用例
clear(list);
释放链表的堆空间
free(list); list = NULL;
实现栈的逻辑 LIFO
存储逻辑
后进先出
push 压入栈
pop 弹出栈
实现队列的逻辑 FIFO
存储为线性表
存取逻辑
先进先出
测试用例
PLinkedList queue = createLinkedList(); addFirst(queue, "aa"); addFirst(queue, "bb");const char* str = (const char*)removeLast(queue); printf("%s\n",str); str = (const char*)removeLast(queue); printf("%s\n", str);
函数实现
createLinkedList()
add()
createNode()
用于把数据打包到堆内存
insert()
void* removeIndex(PLinkedList list, int index)
void set(PLinkedList list, int index, void* newdata)
int size(PLinkedList list)
void* get(PLinkedList list, int index)
void iterator(PLinkedList list)
int hasNext(PLinkedList list)
void* next(PLinkedList list)
int indexOf(PLinkedList list, void* data, Compare fun)
void removeData(PLinkedList list, void* data, Compare fun)
void clear(PLinkedList list)
void* pop(PLinkedList list)
void addFirst(PLinkedList list, void* data)
void addFirst(PLinkedList list, void* data)
void addFirst(PLinkedList list, void* data)
void addLast(PLinkedList list, void* data)
void* removeFirst(PLinkedList list)
void* removeLast(PLinkedList list)
连接两个链表
测试用例
PLinkedList list1 = createLinkedList(); PLinkedList list2 = createLinkedList(); add(list1, "apple"); add(list1, "orange");add(list2, "one"); add(list2, "two");iterator(list1); while ( hasNext(list1)) { const char* str =(const char*)next(list1); printf("%s\n",str); }
交互两个节点的数据
寻找链表中的最大值与最小值
测试用例
const char* max_str = (const char*)max__(list1, my_strcmp); printf("最大字符串:%s\n",max_str); const char* min_str =(const char*)min__(list1, my_strcmp); printf("最小值:%s\n", min_str);
对链表节点的数据进行升序排序
折半查找链表中的数据
打乱链表的数据顺序
增加随机数需要的头文件
#include <stdlib.h> #include<time.h>
对链表数据进行翻转
替换链表中符合的数据为新数据
void addAll__(PLinkedList list1, PLinkedList list2)
void swap__(PLinkedList list, int i, int j)
void* max__(PLinkedList list, Compare fun)
void* min__(PLinkedList list, Compare fun)
void sort__(PLinkedList list, Compare fun)
int binarySearch__(PLinkedList list, void* key, Compare fun)
void shuffle__(PLinkedList list)
void reverse__(PLinkedList list)
void replaceAll__(PLinkedList list, void* oldVal, void* newVal, Compare fun)
树图思维导图提供 第1章 化工设计基本知识 在线思维导图免费制作,点击“编辑”按钮,可对 第1章 化工设计基本知识 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:70ec0519ed26419068a32a511862aadd
树图思维导图提供 工艺流程图 在线思维导图免费制作,点击“编辑”按钮,可对 工艺流程图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:a8e31ea83041e28a9ece5f7d7121fc30