资源描述:
《算法与数据结构(c语言描述)期中复习代码总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一.大o表示法:1.加法规则:f1(n)+f2(n)=o(max(f1(n),f2(n)))->顺序结构,if,switch结构2.乘法:f1(n)*f2(n)=o(f1(n)*f2(n))->for,while,do-while结构实例:(1)i=1;while(i<=n){i=i*2;}假设i=i*2发生的频度是f(n),则2^f(n)<=n,因此,f(n)<=log2n,T(n)=O(logn)ˀɻƴ˩Ɇ(不考虑底数)•V¦ʑCPUǪȶġȔ106eƖSĿzʼ¯ʅǢi108ȟ˨̄Sƴ˩T(n)=2n2
2、ȟɆDzʂˀɻĥ˦ƴ˩Y•ƢǣƪiT(n)=T(108)=2×(108)2=2×1016•ˀɻƴ˩i2×1016/106=2×1010ȶ•[Ĩǁ86,400ȶSƦ˸ʂ231,480ĨSå634Ŕ二.线性表•单链表的改进:1.循环链表-最后一个结点指针指向第一个结点(从循环链表中的任一结点出发,都能访问所有结点),常用方式:clist(最后一个结点),clist->link(第一个结点)2.双链表:很容易找到结点的前驱和后继,代价:每个结点增加一个指针的存储3.循环双链表:将链表的头尾指针存放在头结点中,
3、头结点由头指针cdlist指出,并链接在第一个结点和最后一个结点之间顺序表单链表definestructSeqlist{structNode;intMAXNUM;typedefstructNode*pNode;intn;structNode{DataType*element;pNodelink;}typedefstructSeqlist*PSeqlistDataTypeinfo;}typedefstructNode*Linklist;ListPSeqlistcreatNullList_seq(intm){Li
4、nklistcreateNullList_link{createNullList(void)PSeqlistpalist=(PSeqlist)malloc(sizeof(structSeqlist));Linklistif(palist!=NULL){llist=(Linklist)malloc(sizeof(structpalist->element=(DataTypeNode));*)malloc(sizeof(DataType)*m);if(llist!=NULL)llist->link=NULL;!
5、if(palist->element!=NULL){(?)elseprintf(“Outofspace”);palist->MAXNUM=m;!palist->n=0;returnllist;!returnpalist;}//带头结点!}!elsefree(palist);}printf("OutofSpace");returnNULL;}intisNull(Listlist)intisNull_seq(PSeqlistpalist){intisNull_link(Linklistllist){if
6、(palist->n==0)return1;return(llist->link==NULL);elsereturn0;}Positionintlocate_seq(PSeqlistpalist,DataTypex){PNodelocate_link(Linklistllist,locate(Listlist,inti;DataTypex){for(i=0;in;i++){PNodep;DataTypex)找第if(palist->element[i]==x)returni;if(llis
7、t==NULL)returnNULL;一个值为x的元素elsereturn-1;p=llist->link;}下标}while(p!=NULL&&p->info!=x){p=p->link;}returnp;}1顺序表单链表intinsertPre(Listlist,intinsertPre_seq(PSeqlistpalist,intp,DataTypex){intinsertPre_link(Linklistllist,PNodep,positionp,DataTypeinti;DataTypex){x
8、)在某位置前插入元if(palist->n>=palist->MAXNUM){//溢出PNodep1,q;if(llist==NULL)returnNULL;printf(“Outofflow”);素p1=llist;return0;while(p1!=NULL&&p1->link!=p){}p1=p1->link;if(p<0
9、
10、p>palist->n){//不存在下标为p的}//求p的前驱结点printf(