C语言程序设计朱建芳第13章课件教学.pptVIP

  • 3
  • 0
  • 约1.65万字
  • 约 83页
  • 2017-01-02 发布于未知
  • 举报

C语言程序设计朱建芳第13章课件教学.ppt

13.1 数据结构与算法的概念 2.数据结构的常用术语 13.1.2 算法 13.2 顺序表的插入与删除 13.3 链表的插入与删除 算法的实现如下: int insert( LIST *a , DATATYPE x, int i) /*将新元素x插入在顺序表a的第i(1=i=n)个元素的前面*/ { int k; if(i1||(ia-size+1)||(a-size==MAXSIZE)) /*若线性表满或i超出范围则停止插入并返回0*/ { printf(“position is out of range or list is full!”); return 0; } else{ for(k=a-size;k=i;k--) a-datas[k]=a-datas[k-1]; a-datas[i-1]=x; a-size++; return 1; } } 算法的时间复杂度分析: 这个算法中,运行时间主要花在为空出插入位置所需的移动元素的次数。假定新元素插入的位置为下标i,则元素的移动次数为n-i次(n为线性表的长度a.size)。在任意位置插入的几率相同的条件下,平均需要移动n/2次,即移动线性表中一半的元素。时间复杂度为O(n)。 (4)顺序表的删除 在顺序表上删除第i个元素的操作与

文档评论(0)

1亿VIP精品文档

相关文档