Insert & delte elements in doublely linked list
2015-10-18 11:49
801 查看
Define a doublely linked list
Initialize it, insert at the end
1.创建新节点,作为头结点;
2,根据输入不断创建实体节点;
Find Operation
根据值找到节点, retrun
Delete Operation
1. 找到要删除的点
2. 如果是末尾点,只需把前指针置空;
3.如果是中间指针,前后指针各向原来方向延伸一格。
Insert Operation
1.找到位置i;
2.创建一个新节点,插入。
typedef struct Node{ ElemType data; struct Node* prior; struct Node* next; }Node, *DLinkList;
Initialize it, insert at the end
1.创建新节点,作为头结点;
2,根据输入不断创建实体节点;
DLinkList DLinkListCrate() { Node *p,*L,*tempNode; // 后面有malloc,所以这样定义方便 或者DLinkList P L = (Node*) malloc(sizeof(Node)); L.prior = NULL; *p = L; //如果是定义DLinkList P,此处 P= L; Element x; while(scanf("%d,&x") != EOF) { tempNode = (Node*)malloc(sizeof(Node)); tempNode.data = x, tempNode->prior = p; p->next = tempNode; tempNode->next = NULL; p = tempNode; } return L; }
Find Operation
根据值找到节点, retrun
int DLinkListFind(DLinkList L, ElemType x) { if(L == NULL) return 0; DLinkList p; p = L->next; int i=0; while(p != NULL){ i++; if(p->next == x) return i; p = p->next; } return 0; }
Delete Operation
1. 找到要删除的点
2. 如果是末尾点,只需把前指针置空;
3.如果是中间指针,前后指针各向原来方向延伸一格。
int DLinkListDelete(DLinkList L, int i) { if( NULL == L) return 0; DLinkList p; p = L->next; int j =0; while(j < i && p != NULL) p = p->next; if(p == NULL) return; else if(p->next == NULL){ p->prior->next = NULL; free(p); } else{ p->prior->next = p->next; p->next->prior = p->prior; free(p); } }
Insert Operation
1.找到位置i;
2.创建一个新节点,插入。
DLinkList DLinkListInsert(DLinkList L, int i, ElemType x) { if(NULL == L) return; DLinkList p; p = L->next; int j = 0; while(j < i ) p = p->next; tempNode = (Node*)malloc(sizeof(Node)); p->next->prior = tempNode; tempNode->next = p->next; p->next = tempNode; tempNode->prior = p; }
相关文章推荐
- java设计模式——简单工厂模式
- 天猫魔盒远程安装APP
- 用 gitolite搭建git server实现权限控制(1)
- 关于JAVA的几个概念
- try{}catch(Exception e){}与spring事务
- 深入了解C++中间mutablekeyword
- php使用curl简单抓取远程url的方法
- 关于play框架中要对自己执行原生的sql不能得到page的解决方法。
- Android 扫描蓝牙设备
- php查看网页源代码的方法
- ios的手势操作之UIGestureRecognizer
- Win10预览版10568 64位英文版ISO镜像泄露下载地址
- 路由器原理
- python中汉字匹配
- jdbc数据库连接及优化
- android学习之路--android studio安装,主题,各种配置以及快捷键,注释,以及其他各种问题总结
- ubunt14.04安装cuda
- 说说那些我们使用的CSS/HTML5框架(小贝)
- Android SQLite ORM框架greenDAO在Android Studio中的配置与使用
- php阻止网页被用户频繁刷新