线性表 (一)

 
线性表:由零个或多个数据元素组成的有序列。

ADT 线性表(List

 

Data

    线性表的数据对象集合为{a1,a2,,an},每个元素的类型均为DataType

    其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。

    数据元素之间的关系是一对一的关系。

 

Operation

    InitList(*L): 初始化操作,建立一个空的线性表L

    ListEmpty(L): 判断线性表是否为空表,若线性表为空,返回true,否则返回false

    ClearList(*L): 将线性表清空。

    GetElem(L,i,*e): 将线性表L中的第i个位置元素值返回给e

    LocateElem(L,e): 在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。

    ListInsert(*L,i,e): 在线性表L中第i个位置插入新元素e

    ListDelete(*L,i,*e): 删除线性表L中第i个位置元素,并用e返回其值。

    ListLength(L): 返回线性表L的元素个数。

 

endADT


  //算法 2.1
  void union(List &La,List)
  {
  	//将所有在线性表Lb中单不在La中的数据插入到La中
  	La.len = ListLength(La);
  	Lb.len = ListLength(Lb);
  	for(i = 0;i<=Lb.len;i++)
  	{
  		GetElem(Lb,i,e);  //取出Lb中的元素
  		if(!LocateElem(La.e,equal))
  		{
  			//La中存在也e不同的元素则插入之。
  			ListInsert(La,++La.len,e)
  		}
  	}
  }
  
  //算法 2.2
  void MergeList(List La,List Lb,List &Lc)
  {
  	//已知线性表La和Lb中的元素安值非递减排列
  	//归并La和Lb得到新的线性表Lc,并使Lc也按非递减排列
  	InitList(Lc);
  	i = j =1;
  	k=0;
  	La.len = ListLength(La);
  	Lb.len = ListLength(Lb);
  	while(i<=La.len&&j<=Lb.len)
  	{
  		GetElem(La,i,ai);
  		GetElem(Lb,j.bj);
  		if(ai<bj)
  		{
  			ListInsert(Lc,++k,bj);
  			j++;
  		}
  		else
  		{
  			ListInsert(Lc,++k,ai);
  			i++;
  			}
  	}
  	
  	while(i<=La.len)
  	{
  		GetElem(La,i++,ai);
  		ListInsert(Lc,++k;ai);
  	} //end La
  	
  	while(j<=Lb.len)
  	{
  		GetElem(Lb,j++,bj);
  		ListInsert(Lc,++k,bj);
  	} //end Lb
  }	//end MergeList
  

第一天,好好加油,虽然有点不习惯,慢慢的就会习惯了....









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值