插入及删除
来源:互联网 发布:吉他弹唱手机录音软件 编辑:程序博客网 时间:2024/06/05 06:33
插入及删除
// 将一个 node 插入到一个 list 对象上
void insert(void *node){
Node *current = (Node*)malloc(sizeof(Node));
current->data = node;
current->next = list->_this->head->next;
list->_this->head->next = current;
(list->_this->size)++;
}
// 删除一个指定的节点 node
void drop(void *node){
Node *t = list->_this->head;
Node *d = NULL;
int i = 0;
for(i;i < list->_this->size;i++){
d = list->_this->head->next;
if(d->data == ((Node*)node)->data){
list->_this->head->next = d->next;
free(d);
(list->_this->size)--;
break;
}else{
list->_this->head = list->_this->head->next;
}
}
list->_this->head = t;
}
其他的实现代码可以参看下载部分,这里限于篇幅就不再意义列举出来。
测试
测试代码
好了,前面做的一切工作都是为了保证我们的暴露给使用者的 API 可以尽量的简洁,优美,现在到测试的时候了:
清单 4. 测试代码
int main(int argc, char** argv) {
List *list = (List*)ListConstruction();// 构造一个新的链表
// 插入一些值做测试
list->insert("Apple");
list->insert("Borland");
list->insert("Cisco");
list->insert("Dell");
list->insert("Electrolux");
list->insert("FireFox");
list->insert("Google");
list->print();// 打印整个列表
printf("list size = %d/n",list->getSize());
Node node;
node.data = "Electrolux";
node.next = NULL;
list->drop(&node);// 删除一个节点
node.data = "Cisco";
node.next = NULL;
list->drop(&node);// 删除另一个节点
list->print();// 再次打印
printf("list size = %d/n",list->getSize());
list->clear();// 清空列表
return 0;
- 插入及删除
- RB_TREE 红黑树插入及删除
- B+树的插入及删除操作
- 链表的简单插入及删除
- 二叉排序树的建立、结点插入及删除
- 数据库的读取 插入 删除 及修改
- 二叉树三种遍历及删除和插入
- 单链表的插入 删除 及带环 问题
- 双链表的建立,删除及插入
- 单链线性表的创建,插入,删除及合并
- 顺序表的实现(包含插入,删除,及查找)
- 【算法】红黑树的讲解及插入删除算法实现原理
- 线性表创建插入删除及各种排序算法实现
- 队列的结构体,插入及删除(绝对正确)
- 堆排序及堆的插入,删除等
- 顺序表创建插入删除操作及实现
- 双向链表的插入及删除图解
- AVL树的插入、删除及遍历C语言实现
- 进程管理
- VPN基础
- unplumb the vip.
- 实例 c语言
- 远程服务器返回错误: (404) 未找到。
- 插入及删除
- Format the raw device for ASM
- java获得rss订阅中的信息
- TFS API的使用
- java程序发送邮件简单例子
- ASP.NET网站与ASP.NET应用程序的区别
- Linux进程状态解析
- jpanel背景图片设置方法
- 单元测试..内置