双链表的增删改查基本操作
来源:互联网 发布:手机淘宝联盟怎么省钱 编辑:程序博客网 时间:2024/06/05 04:51
双链表
在单链表的每个结点中再设置一个指向上一跳的前驱结点的指针域
//结构体定义typedef struct _node { dataType data; //链表中的数据域 struct _node *next; //链表的下一跳 struct _node *prior; //链表的上一跳}LinkNode,*LinkedList;//双链表//创建结点DLinkedList DlistCreatNode(dataType data){ DLinkedList node = (DLinkedList)malloc(sizeof(DLinkedList)); if(NULL == node) { perror("DlistCreatNode err"); return NULL; } node->data = data; node->next = NULL; node->prior = NULL; return node;}//头插法int DlistInsertHead(DLinkedList L,dataType data){ DLinkedList p = DlistCreatNode(data); if(NULL == p) { perror("DlistCreatNode err"); return -1; } p->next = L->next; p->prior = L; L->next->prior = p; L->next = p; return 0;}//尾插法int DlistInsertTail(DLinkedList L,dataType data){ DLinkedList temp = L; while(temp->next) { temp = temp->next; } DLinkedList p = DlistCreatNode(data); if(NULL == p) { perror("DlistCreatNode err"); return -1; } temp->next = p; p->prior = temp; return 0;}//以序号插入int DlistInsertIndex(DLinkedList L,int i,dataType data){ int n = 0; DLinkedList temp = L; while(temp->next && n < i - 1) { temp = temp->next; } if(n < (i-1) || !temp) { return -2;//超出链表长度 } DLinkedList p = DlistCreatNode(data); if(NULL == p) { perror("DlistCreatNode err"); return -1; } p->next = temp->next; p->prior = temp->prior; temp->next->prior = p; temp->next = p; return 0;}//删除某一值得结点int DlistDeleteValue(DLinkedList L,dataType data){ int n = 0; DLinkedList temp = L; while(temp->next ) { temp = temp->next; if(temp->data == data) { temp->next->prior = temp->prior; temp->prior->next = temp->next; n++; } } return n;}//printListint printDLinkList(DLinkedList L){ DLinkedList temp = L; while(temp->next) { temp = temp->next; printf("%4d ",temp->data); } printf("\r\n"); return 0;}int main(){ //双链表 DLinkedList d_List; dList = DlistCreatNode(NULL); for(int i = 100;i < 110;i++) DlistInsertTail(d_List,i); //创建一个链表 printDLinkList(d_List); DlistInsertHead(d_List,99); printDLinkList(d_List); return 0;}
阅读全文
0 0
- 双链表的增删改查基本操作
- MyBatis的增删改查基本操作
- Ibatis基本的增删改查操作
- ldap的增删改查基本操作
- Mybatis 增删改查的基本操作
- mysql基本的增删改查操作
- mysql 基本的增删查改操作
- mysql操作的基本增删改查
- mongoDB-- 基本的操作增删改查
- 单链表的增删改查基本操作
- 栈的增删改查基本操作
- Java双链表增删改查基本操作
- 增删查改基本操作
- 基本操作增删改查
- Sql的基本操作之增删查改操作
- 基本的增删改查
- tp基本的增删改查的操作demo
- 链表的基本操作的实现---- 增删改查
- ubuntu使用apt-get --如何解决Please verify ICU install prefix and make sure icu-config works.
- Kinect openni 驱动
- 浏览器的怪异模式与标准模式
- 龟兔赛跑 (DP)
- OkHttp
- 双链表的增删改查基本操作
- mfc 非阻塞延时
- 2017.10.13 学习写maven java web项目
- Python提取cuckoo运行结果到新目录中
- 在WCF WsHttp绑定上启用HTTPS的七个简单步骤
- 生产制造信息系统给企业带来哪些巨大变化?
- spring boot(七):springboot+mybatis多数据源最简解决方案
- BZOJ1053 反素数ant [打表]
- cocos2dx 富文本XML格式说明