再封装的方式,用 c++ 的思想做无头链表
链表的结构体描述(节点)
#include <stdio.h> #include <stdlib.h> #include <assert.h> typedef int DataType; //节点 typedef struct Node { DataType data; struct Node* next; }NODE,*LPNODE;
再定义一个结构体(链表)
通过记录头节点和尾节点的方式去描述链表
typedef struct list { LPNODE frontNode; //头节点 LPNODE backNode; //尾节点 int curSize; //当前节点个数 }LIST,*LPLIST;
断言处理 & 判空处理
如果 list 为空,会引发中断(申请内存可能失败)
防御性编程,如果申请内存失败,操作无效,NULL 里面没有 frontNode,backNode,curSize,存在安全隐患C6011:取消对 NULL 指针"list"的引用
如果申请内存失败,assert()直接让程序直接中断,并且告诉你程序断在哪一行
#include<assert> //断言处理宏 #de