当前位置:   article > 正文

Educoder头歌数据结构顺序表及其应用_获取顺序表l的第i个元素赋给e,i的有效范围[1,l.length]。

获取顺序表l的第i个元素赋给e,i的有效范围[1,l.length]。

头歌实践平台答案educoder

数据结构-顺序表及其应用

第1关:顺序表的实现之查找功能

/*************************************************************
    顺序表的实现之查找功能  实现文件
    更新于2020年4月13日   
**************************************************************/

void SL_GetAt(SqList L, int i, ElemType &e)
// 获取顺序表L的第i个元素赋给e,i的有效范围[1,L.length]。
{
	// 请在这里补充代码,完成本关任务-*/
	/********** Begin **********/
	e = L.elem[i-1];
	/********** End **********/
}

int SL_FindValue(SqList L, ElemType x)
// 在顺序表L中查找第一个值为x的元素,找到则返回该元素在表中的位置,否则返回0。
{
	// 请在这里补充代码,完成本关任务
	/********** Begin **********/
	
    int i=0;
	for(i=0;i<L.length;i++){
		if (L.elem[i]==x)
			return i+1;	
	}
	return 0;
	/********** End **********/
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

第2关:顺序表的实现之增删功能

/*************************************************************
    顺序表的实现之增删功能 实现文件
    更新于2020年4月13日    
**************************************************************/
void SL_InsAt(SqList &L, int i, ElemType e)
// 在顺序表的第i个位置插入新元素e, 即在元素L.elem[i-1]之前插入
// i的有效范围[1,L.length+1]
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
	int  j;
	for(j=L.length;j>i-2;--j)
	{
		L.elem[j+1] = L.elem[j];

	}
	L.elem[j+1] = e;
	L.length++;
    /********** End **********/
}

void SL_DelAt(SqList &L, int i)
// 删除顺序表L的第i个元素
//i的有效范围[1,L.length]
{

    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
	int j;
	for (j=i-1;j<=L.length;++j)
        {
          L.elem[j] = L.elem[j+1];
		}
		L.length--;

    /********** End **********/
}

void SL_DelValue(SqList &L, ElemType x)
// 删除第一个值为x的元素
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
	

        //方法一:while查找待删值位置,进入for循环删除
        int i=0;
        while(L.elem[i]!=x&&i<L.length)
                i++;

        if(L.elem[i]==x)
        {
            for (i;i<L.length;i++)
                L.elem[i] = L.elem[i+1];

            L.length--;
        }

        /*方法二:查到位置,立刻删除
        int i=0;

        for(i=0;i<L.length;i++)
        {
            if(L.elem[i]==x)
            {
                for(i;i<L.length;i++)
                    L.elem[i] = L.elem[i+1];

                L.length--;
                break;

            }
        }
    */
    /********** End **********/
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

第3关:顺序表的合并


/*************************************************************
    顺序表的合并  实现文件
    更新于2020年4月13日  
**************************************************************/
void MergeList_Sq(SqList LA,SqList LB,SqList &LC)
//已知顺序表LA和LB的元素按值非递减排列
//归并LA和LB得到新的顺序表LC,LC的元素也按值非递减排列。
{
	// 请在这里补充代码,完成本关任务
    /********** Begin *********/
	//1.定义
	LC.length =  LA.length + LB.length;
	int i=0 , j=0,t=0;
	//比较两个顺序表中的值,并将小的值放入LC中,当其中一个表比较完成后
	while(i<LA.length&&j<LB.length)
		{
			if(LA.elem[i]<=LB.elem[j])
				LC.elem[t++] = LA.elem[i++];
			else
				LC.elem[t++] = LB.elem[j++];	
		}
	
	//2.直接将另一个未比较完成的表中的剩余值全部放到LC中
	if(i==LA.length)
		{
			while(t<LC.length)
			LC.elem[t++] = LB.elem[j++];	
		}
	else
		{
			while(t<LC.length)
			LC.elem[t++] = LA.elem[i++];
		}

	/********** End **********/
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
																											"答案仅供参考"
																											"直接抄袭毫无意义"
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/559376
推荐阅读
相关标签
  

闽ICP备14008679号