元素插入顺序表

线性表(a1,a2,a3,...,an)中元素递增有序且按顺序存储于计算机内,要求设计一算法完成:

1)用最少时间在表中查找元素数值为x的元素

2)若找到将其与后继元素位置相交换

3)若找不到将其插入表中并使表中元素仍然递增有序

#include <stdio.h>
#define N 8
#define ElemType int
int SearchExchangeInsert(ElemType a[],ElemType x)
{
    int low,high,mid,i;
    low = 0,high = N-2;
    while(low <= high)
    {
        mid = (low + high)/2;
        if(a[mid] == x)
            break;
        else if(a[mid] < x){
            low = mid + 1;
        }
        else{
            high = mid -1;
        }
    }
    if(a[mid] == x && mid != N-2)//若最后一个元素与x相等,则不存在与其后继交换的操作
    {
        a[mid] = a[mid+1] - a[mid] + (a[mid+1] = a[mid]);
    }
    if(low > high)//查找失败,插入元素x
    {
        for(i=N-2;i>high;i--)//a[high] < x,high之后都比x大
            a[i+1] = a[i];
        a[i+1] = x;
        return 1;
    }
    return 0;
}
int main()
{
    ElemType a[N] = {1,4,7,10,20,23,25};//默认最后一个数为0
    ElemType x = 26;//0,1,3,8,25,26
    if(SearchExchangeInsert(a,x))//x插入表中
        for(int i=0;i<N;i++)
            printf("%d,",a[i]);
    else{
        for(int i=0;i<N-1;i++)
            printf("%d,",a[i]);
    }
    return 0;
}
时间: 2024-10-10 18:12:43

元素插入顺序表的相关文章

编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。

#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; typedef int ElemType; typedef int Status; #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 ElemType * new

2-01基本顺序表与元素外置顺序表recv

顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等,一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 对于这种需求,最简单的解决方案遍是将这样一组元素看成是一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种关系. 这样的一组序列元素的组织形式,我们可以将其抽象为线性表.一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系,线性表是最基本的数据结构之

顺序表

#include <cstdio> #include <cstring> ///都用c语言写的 #include <iostream> ///建议从主函数开始看 #include <cstdlib> using namespace std; int sequence_map[1000]; int total_sequence = 0; void init_sequence() ///主界面. ///一级菜单中顺序表的操作界面 init初始化 { printf

数据结构学习总结(1)线性表之顺序表

通过前面的学习知道,具有“一对一”逻辑关系的数据,最佳的存储方式是使用线性表.那么,什么是线性表呢? 线性表,全名为线性存储结构.使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”. 采用线性表将其储存到物理空间中. 首先,用“一根线儿”把它们按照顺序“串”起来,如图 2 所示:                                                             图 2 数据的"线性"结构 图 2 中,左侧是“

(java实现)顺序表-ArrayList

什么是顺序表 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构. 在使用顺序表存储数据前,会先申请一段连续的内存空间(即数组),然后把数组依次存入内存,中间没有一点空隙. 基本操作 每个数据结构都有集合对数据处理的方法,这能让我们更方便的使用保存在数据结构中的数据.顺序表的基本操作有:增(add),删(remove),改(set),查(find),插(insert)等. 在这里我们只详细讲解remove 和 insert 操作,其他实现可看下

顺序表添加与删除元素以及 php实现顺序表实例

对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);    保证了原始顺序列表的顺序. b)非保序的加入元素(不常见),时间复杂度O(1);   打乱了原始顺序列表的顺序. c)保需的元素插入,时间复杂度O(n);    保证了原始顺序列表的顺序. 删除元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  删除元素 ,有三种方式

顺序表应用2:多余元素删除之建表算法

顺序表应用2:多余元素删除之建表算法 Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个).要求:       1.必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能:       2.本题的目标是熟悉在顺序表原表空间基础上建新表的算法,要在原顺序表空间

顺序表应用1:多余元素删除之移位算法

顺序表应用1:多余元素删除之移位算法 Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个).要求:       1.必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能:       2.本题的目标是熟悉顺序表的移位算法,因此题目必须要用元素的移位实现删除

线性表---顺序表

线性结构的特点是:在非空的有限集合中,只有唯一的第一个元素和唯一的最后一个元素.第一个元素没有直接前驱元素,最后一个没有直接的后继元素.其它元素都有唯一的前驱元素和唯一的后继元素. 线性表是一种最简单的线性结构.线性表可以用顺序存储结构和链式存储结构存储,可以在线性表的任意位置进行插入和输出操作. 要想将线性表在计算机上实现,必须把其逻辑结构转化为计算机可识别的存储结构.线性表的存储结构主要有两种:顺序存储结构和链式存储结构. 线性表的顺序表示与实现 线性表的顺序存储结构 线性表的顺序存储结构指