zoukankan      html  css  js  c++  java
  • 数据结构4

    获得元素操作

    实现GetElem的具体操作,即将线性表L中的第i个位置的元素值返回。(我们只需把数组第i-1下标的值返回即可)

    #define OK 1
    #define  ERROR 0
    #define TRUE 1
    #define FALSE 0
    
    typedef int Status;
    
    //Status 是函数的类型,其值是函数结果状态代码,如OK等
    //初始条件,顺序表L已存在,i <= i <= ListLength(L)
    //操作结果,用e返回L中第i个数值
    
    Status GetElem(SqList l, int i, ElemType *e)
    {
    	if(L.length == 0 || i < 1 || i > L.length)
    	{
    		return ERROR;
    	}
    	*e = L.data[i-1];
    	
    	return OK;
    }
    

    插入操作

    实现ListInsert(*L, i, e),即在线性表L中的第i个元素位置插入新元素e。

    思路:

    • 如果插入位置不合理,抛出异常
    • 如果线性表的长度大于等于数组长度,则抛出异常或动态增加数组容量
    • 从最后一个y元素开始向前遍历到第i个位置m,分别d将它们都向后移动一个位置
    • 将要插入元素填入位置i处
    • 线性表长度j+1

    //初始条件,顺序表L已存在,i <= i <= ListLength(L)
    //操作结果,在L中第i个元素位置插入新元素e,L长度+1

    Status ListInsert(Sqlist *L, int i, ElemType e)
    {
    	int k;
    	
    	if(L->Length == MAXSIZE)   //顺序表已经满了 
    	{
    		return ERROR;
    	}
    	if(i < 1 || i > L->Length+1)  //当i不在范围内时 
    	{
    		return ERROR;
    	}
    	if(i <= L->Length)  //插入的数据不在表尾 
    	{
    		for(k = L->Length-1; k >= i-1; k--)
    		{
    			L->data[k+1] = L->data[k];
    		}
    	}
    	L->data[i-1] = e;  //如果在表尾直接插入
    	L->Length++;
    	
    	return OK; 
     }
  • 相关阅读:
    js如何识别后端返回的“↵”,让其换行
    ReactNative插件
    ReactNative踩坑
    js对当前时间进行处理
    vue-awesome-swiper手动滑动后不再自动轮播的问题
    HTML5知识点汇总
    懒加载的实现原理及一些实现方法
    使用node.js实现多人聊天室(socket.io、B/S)
    [vue学习] 卡片展示分行功能简单实现
    [vue学习]快速搭建一个项目
  • 原文地址:https://www.cnblogs.com/zw431387/p/11605407.html
Copyright © 2011-2022 走看看