数据结构与算法(c语言) 学习笔记——第三章练习
2016-03-10 17:41
1001 查看
时间复杂度
就是程序的大概运行步骤数,用程序中的一些变量表示
3.1
3.2
时间复杂度为O(L+P),想象成2个游标,L随着P移动
3.3
3.4
就是程序的大概运行步骤数,用程序中的一些变量表示
3.1
/*print all element*/ void PrintList(List L) { Position P; P=L->Next; if(!IsEmpty(L)) { while(!IsLast(P)) { printf("%d",P->Element); P=P->Next; } } }
3.2
时间复杂度为O(L+P),想象成2个游标,L随着P移动
/*L,P都是链表,包含升序排列的整数,打印L中那些由P指定位置上的元素*/ /* //复杂了,如果不是按照升序排列,可以这么写 void PrintLots(List L,List P) { int Index; Position Lp,Pp; Lp=L->Next; Pp=P->Next; int i; while(!(IsLast(Pp))) { Index=Pp->Element; for(i=0;i<Index;i++) Lp=Lp->Next; printf("%d",Lp->Element); Lp=L->Next; Pp=Pp->Next; } } */ void PrintLots(List L,List P) { int Index=1; Position Lp,Pp; Lp->Next; Pp->Next; while(Lp!=NULL&&Pp!=NULL) { if(Pp->Element==Index++) { printf("%d",Lp->Element); Pp=Pp->Next; } Lp=Lp->Next; } }
3.3
/*交换BeforeP后面的2个元素*/ void Swap(List L,Position BeforeP) { Position P,AfterP; P=BeforeP->Next; AfterP=P->Next; P->Next==AfterP->Next; AfterP->Next=P; BeforeP->Next=AfterP; } /*双链表,prev指向前节点*/ void Swap2(List P,Position P) { Position AfterP,BeforeP; BeforeP=P->Prev; AfterP=P->Next; P->Next=AfterP->Next; P->Prev=AfterP; BeforeP->Next=BeforeP; AfterP->Next=P; AfterP->Prev=BeforeP; }
3.4
/*计算L1与L2的交集*/ List Intersection(List L1,List L2) { List L; Position P1,P2,P; P1=L1->Next; P2=L2->Next; MakeEmpty(L); P=L->Next; while(L1!=NULL &&L2!=NULL) { if(P1->Element==P2->Element) { Insert(P1->Element, L, P) } else if(P1->Element<P2->Element) { P1=P1->Next; } else { pP2=P2->Next; } } return L; }
相关文章推荐
- 数据结构之链表操作
- 数据结构与算法javascript描述(六)集合
- 数据结构与算法Javascript描述(五)循环链表
- 数据结构—线性表
- 数据结构与算法Javascript描述(四)双向链表
- 类(class)和结构(structure)的认识
- 数据结构与算法Javascript描述(三)链表
- [数据结构-后缀数组小结]
- [数据结构-hash]CF 7D Palindrome Degree
- 数据结构—绪论
- 数据结构与算法Javascript描述(二)队列
- 【c++版数据结构】单链表复习之常见面试题型1
- 数据结构与算法Javascript描述(一)栈
- 数据结构
- nginx源码初读(11)--让烦恼从数据结构开始(ngx_command/ngx_module/ngx_conf)
- Zookeeper - 介绍篇(2)
- 单链表排序之选择排序
- 数据结构——队列
- 【数据结构课程大作业】通信录管理系统
- 【数据结构课程大作业】通信录管理系统