双向链表
来源:互联网 发布:360软件管理器下载 编辑:程序博客网 时间:2024/05/21 09:24
#include "two-way.h"#include <math.h>#include <stdlib.h>#include <string.h>NODE* head = NULL;//插入bool _insert(int index, const char* name){ NODE* p = (NODE*)malloc(sizeof(NODE)); memset(p, 0, sizeof(NODE)); p->index = index; strcpy(p->name,name); p->prev = NULL; p->next = NULL; if (head == NULL) { head = p; return true; } if (head->index > p->index) { p->next = head; head->prev = p; head = p; return true; } for (NODE* node = head ; node !=NULL; node = node->next) { if (node->next == NULL) { node->next = p; p->prev = node; return true; } if (p->index <node->next->index) { p->next = node->next; node->next->prev = p; node->next = p; p->prev = node; return true; } } return false; }//修改bool _modify(int index, const char* name){ for (NODE* q = head;q != NULL; q = q->next) { if (q->index == index) { strcpy(q->name,name); return true; } } return false;}//删除bool _remove(const char*name){ NODE* p; NODE* q = NULL; for (p=head;p!=NULL;p=p->next) { if (p == head && (strcmp(p->name, name) == 0)) { head = p->next; free(p); head->prev = NULL; return true; } if (p->next == NULL&&(strcmp(p->name, name) == 0)) { p->prev->next = NULL; free(p); /*free(p); p->next = NULL;*/ return true; } if (strcmp(p->name, name) == 0) { //q = p; p->next->prev = p->prev; p->prev->next = p->next; free(p); //p->prev->next = q; return true; } } return false;}//清空链表bool _clear(){ for (NODE* p = head; p != NULL;) { head = head->next; free(p); head->prev = NULL; p = head; if (head->next == NULL) { head = NULL; free(p); return true; } } }void show(){ for (NODE* p = head; p != NULL; p = p -> next) { printf("%d %s\n",p->index,p->name); } printf("\n");}void main(){ _insert(7,"张三"); _insert(3,"李四"); _insert(8,"张晨"); _insert(4, "张四"); _insert(6,"李四"); _insert(1, "张晨"); show(); _modify(1,"王五"); show(); _remove("张三"); _remove("张晨"); show(); _clear(); show(); getchar();}
阅读全文
0 0
- SzNOI 双向约瑟夫(双向链表)
- 双向链表&&堆栈
- 双向链表
- 使用双向链表
- 双向链表
- 双向循环链表
- 双向循环链表
- 双向链表
- 实现双向链表
- 双向循环链表
- 建立双向链表
- 双向链表
- 双向链表
- 双向循环链表
- 双向链表
- 链表-双向链表
- 双向链表
- 双向动态链表
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
- 学Web前端
- 使用Guava-RateLimiter做接口限流
- mysql 压力测试 转载---
- 关系系统
- 双向链表
- 02.奇特的一生——(笔记)
- CopyOnWriteArrayList应用详解
- Android 点击关闭所有activity
- JDBC连接MySQL教程(数据库内容查询)
- Dubbo/Dubbox的服务暴露(三)- 服务的注册
- 操作符重载
- okhttp自定义拦截器,封装公共参数,get或post请求不同的拦截器
- 数据库的事物隔离性和隔离级别