数据结构读书笔记2
2015-08-16 10:33
573 查看
一切为了:
Merge
1.《大话数据结构》
1.个人感觉,这一块《大话数据结构》作者搞的略混。代码也有少许我不赞成的地方,会在之后的工作中,改正我认为不完美的地方。
2.毕竟现在不是大师,改正过程中我会以实际运行为标准,并且查阅相关的大牛们编著的书籍。
3.正如我开头所说一切为了Merge,形成自己的知识体系才是重要的。
头指针头结点的异同:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/25/4eda8ac7fa2ba28ca9324d497a115df2)
声明一个结点p指向链表第一个结点,初始化j从1开始
当j
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/25/8769a8bd2ebea62fa911a14cfaf2f8f2)
这段代码要注意的是s->next = p->next; p->next = s; 这两个的顺序。
删除操作
实际要做:p->next = p->next->next
算法思路:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/25/a839c74609688d9add746819f1ad0b4a)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/25/ad515ff8196b7eebe53185be630417d4)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/25/0e40aef4f4eea843aa2580aae2abe1f8)
Merge
1.《大话数据结构》
1.个人感觉,这一块《大话数据结构》作者搞的略混。代码也有少许我不赞成的地方,会在之后的工作中,改正我认为不完美的地方。
2.毕竟现在不是大师,改正过程中我会以实际运行为标准,并且查阅相关的大牛们编著的书籍。
3.正如我开头所说一切为了Merge,形成自己的知识体系才是重要的。
1.单链表
有时为了方便,第一个结点设头结点,可以存储线性表长度等附加信息头指针头结点的异同:
/*线性表单链表存储结构---C实现*/ typedef struct Node { ElemType data; //注意这里的ElemType struct Node *next; } Node; typedef struct Node *LinkList;
2.单链表的读取
算法思路:声明一个结点p指向链表第一个结点,初始化j从1开始
当j
Status GetElem(LinkList L,int i,ElemType *e) { int j; LinkList p; p = L->next; j = 1; while(p && j<i) { p = p->next; ++j; } if( !p || j>i) return ERROR; *e = p->data; return OK; }
3.单链表的插入与删除
插入结点的算法思路Status ListInsert(LinkList *L,int i,ElemType e) { int j; LinkList p,s; p = *L; j = 1; while( p && j<i) { p = p->next; ++j; } if( !p || j>i) return ERROR; s = (LinkList)malloc(sizeof(Node)); s->data = e; s->next = p->next; p->next = s; return OK; }
这段代码要注意的是s->next = p->next; p->next = s; 这两个的顺序。
删除操作
实际要做:p->next = p->next->next
算法思路:
Status ListDelete(LinkList *L,int i;ElemType *e) { int j; LinkList p,q; p = *L; j = 1; while(p->next &&j<i) { p = p->next; ++j; } if(!(p->next) || j>i) return ERROR; q = p->next; p->next = q->next; *e = q->data; free(q); return OK; }
4. 单链表的整表创建
/*随机产生n个元素的值,建立带表头结点的单链线性表L(头插法)*/ void CreateListHead(LinkList *L,int n) { LinkList p; int i; srand(time(0)); //初始化随机数种子 *L = (LinkList)malloc(sizeof(Node)); (*L)->next = NULL; for(i=0;i<n;i++) { p = (LinkList)malloc(sizeof(Node)); p->data = rand()%100+1 p->next = (*L)->next; (*L)->next = p; } }
/*随机产生n个元素的值,建立带表头结点的单链线性表L(头插法)*/ void CreateListTail(LinkList *L,int n) { LinkList p,r; int i; srand(time(0)); *L = (LinkList)malloc(sizeof(Node)); r = *L; for(i=0;i<n;i++) { p = (Node*)malloc(sizeof(Node)); p->data = rand()%100+1; r->next = p; r = p; } r->next = NULL; }
5.单链表的整表删除
算法思路:Status ClearList(LinkList *L) { LinkList p,q; p = (*L)->next; while(p) { q = p->next; free(p); p = q; } (*L)->next = NULL; return OK; }
6.总结
单链表结构与顺序存储结构:相关文章推荐
- <四>java数据结构与算法 插入排序
- <三>java数据结构与算法 选择排序
- <二>java数据结构与算法 冒泡排序
- [Data Structure] 数据结构中各种树
- <一>java数据结构与算法 数组
- RMQ区间求最值
- Java数据结构
- 《数据结构与算法分析——c语言描述》读后笔记 3
- PAT《数据结构学习与实验指导》实验项目集 3-05
- 数据结构——线索二叉树
- 数据结构学习笔记――线性表
- 数据结构 学习之图
- 数据结构学习笔记――概述
- PAT《数据结构学习与实验指导》实验项目集 3-04
- [mahout in action]mahout中用于推荐引擎的数据结构(二)
- [mahout in action]mahout中用于推荐引擎的数据结构(一)
- nginx源码分析2———基础数据结构六(ngx_hash_keys_arrays_t)
- 数据结构 字符串模式匹配之KMP算法
- C源码@数据结构与算法->AVL树
- 数据结构概述