精华内容
下载资源
问答
  • 顺序表的插入

    2020-04-27 16:17:49
    开发工具与关键技术:VS软件,顺序表的插入 作者:陈隆 撰写时间:2020年04月21日 说到新增和就肯定会想起以前做的新增中的新增,其实本文讲的插入和也是和c#中的差不多的操作吧,只不过就是代码部分的差别吧。虽然...
    开发工具与关键技术:VS软件,顺序表的插入
    作者:陈隆
    撰写时间:2020年04月21日
    

    说到新增和就肯定会想起以前做的新增中的新增,其实本文讲的插入和也是和c#中的差不多的操作吧,只不过就是代码部分的差别吧。虽然是差不多的但是这里讲的是只适合顺序表中的操作,顺序表也就是表中的元素是按顺序来存放好的,地址是连续的,不能存在断续的,如果都不满足以上的两个条件那么就肯定不能使用本方法来实现插入的,如果顺序表中的元素没有按照顺序存放的而使用顺序表的插入方法操作那就肯定是会有问题的,所以这个方法只适合已经排好序的顺序表使用。这个就不像c#中的增删查改几乎可以适应所有的数据表中,可能这就是其中的一些不同吧。那么下面就先使用动态图来演示一下插入的过程,那么就直接上图片更好的体现出效果。
    (未插入数据图)
    在这里插入图片描述

    从上图可以看到这就是代表着一个表中的数据是按照顺序存放好的,地址是连续在一起的,这时就肯定有很多人会有那么一个疑问了,就是在如何在表中插入数据呢,插入数据后表中的数据是否就不能连在一起了呢。其实这些别人都已经设置好的了,我们只需要使用别人开发者已经做好的代码就可以实现在顺序表中进行数据的插入了,那么再来看一下使用代码在顺序表中插入数据后的图片,一起来看一下到底是怎样把数据插入到顺序表中的。
    (插入数据后图)
    在这里插入图片描述

    上图中可以看到已经插入了一个新元素X而这个元素是重后面开始找自己需要插入的位置的,而不是从前面开始的,就是这样从后面开始,所以需要把后面的元素往后移动一个元素的位置才可以把需要插入的元素插入到设定的位置中,必须先把后面的数据往后移动一个元素的位置才可以。这样把需要插入的元素的位置空出来后就可以把元素插入到该插入的位置了。如果是从前面开始移动元素就会把后面的元素给冲掉,冲掉就会造成元素丢失,丢失的元素就会找不回来的,这样是不可取的。这里的方法虽然是看着和C#中的新增数据是同一个操的,可是这就是一个有一些不一样的新增,这个插入也可以说跟C#中的新增是完全不一样的,因为新增也就是在数据表中的尾部新增一条数据的,而本插入法就可以在任何的地方插入一条数据,反正都是往数据表中新增数据,而方法有一些不一样,可能这就是应对了,同一个功能给多个人打出来的代码都是不怎么可能一样的,可能这就是代码中的奇妙之处吧。 那么下面看一下操作的代码到底是怎样写的。(插入元素代码图)
    在这里插入图片描述

    上图的代码就是顺序表的插入的主要代码,代码中的括号中就是需要插入的元素,object就是需要把需要插入的数据插入到第几位,这里根据需要来填写就可以了,这里还需要根据数据表中来填写的,填写的必须是数据库表中是可以操作的,否则没有的话就操作不了了,然后就是一个for循环了吧,size就是元素的个数,然后到i这个位置的后面的元素都往后移一个元素,目的就是把后面的元素往后移一个位置,把需要插入的元素的位置空出来,这样才可以把需要插入的元素插入到设定好的位置中,如果不先把后面的元素往后移那么是不可能直接插入元素的,就是这样的所以直接把后面的元素直接往后移就可以了,因为定位是在设定的位置的前一位的,所以后面的元素可以直接往后移动了,不需要再给设定的位置留出一个元素位置了,这就是需要在定位的时候必须要在对应的位置前一位定好位,这就是这样的用处的,然后就是需要把需要的元素赋值到需要插入的位置中,最后表中的数据要加加。然后还可以用图解来可以更好的看懂整个过程。(图解图)
    在这里插入图片描述

    上图就可以更好的看出插入的对比了,就这样就可以完成顺序表中的元素插入了。

    展开全文
  • C语言顺序表的插入删除

    万次阅读 多人点赞 2018-09-13 22:08:41
    首先声明一个顺序表的结构 (数组的第一个元素是0,但是顺序表的第一个一般 从1(人为设定)开始) #include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 #define OK 1 #define ...

    首先声明一个顺序表的结构 (数组的第一个元素是0,但是顺序表的第一个一般 从1(人为设定)开始)

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXSIZE 10
    #define OK	  1
    #define FALSE 0 
    
    typedef int Elemtype;
    typedef bool Status;
    
    typedef struct list
    {
    	Elemtype *elem;
    	int len;        //数据个数
    	int listsize;   //顺序表长度
    }List;
    

    listsize 代表这个顺序表的最大容量,可以随时扩容

    len 代表在你创建的这个顺序表中有几个有效的数据,总是小于等于listsize

    一、初始化顺序表属性

    void list_init(List *L)
    {
    	L->elem=(Elemtype *)malloc(MAXSIZE*sizeof(Elemtype));//开辟空间
    	if(L->elem==NULL)//判断空间是否开辟成功
    	{
    		printf("malloc fail\n");
    		exit(0);
    	}
    
    	L->len=0;	//初始化数据有效数据为0
    	L->listsize=MAXSIZE;	//初始化数组长度为MAXSIZE
    }

    二、顺序表的插入

    Status list_insert(List *L,int i,Elemtype data)
    {
    	Elemtype *base,*insert,*p;
    	if(i<1 || i>L->len+1 || L==NULL)
    	{
    		printf("位置输入错误\n");
    		return FALSE;
    	}
    	if(L->len > L->listsize)
    	{
    		base=(Elemtype *)realloc(L->elem,(L->listsize+MAXSIZE)*sizeof(Elemtype));//动态扩容
    		L->elem=base;
    		L->listsize+=MAXSIZE;//更新顺序表大小
    	}
    	insert=&(L->elem[i-1]);//目标指针指向要插入的目标地址
    	  //指向最后一个元素的地址
    	for(p=L->elem + L->len-1;p>=insert;p--)
    	{
    		*(p+1)=*p;
    	}
    	*insert=data;
    	L->len++;
    	return OK;
    }

    三、删除 

    Status delete_list(List *L,int i)
    {
    	ElemType *q,*delete_i;
    	if(L==NULL||i<0||i>L->len)
    	return FALSE;
    	delete_i=&(L->elem[i-1]);//用指针指向要删除位置的地址
    	q=L->elem + L->len-1;    //q指针指向顺序表最后一个位置的地址   首地址加上数组长度就是最后一个元素地址
    	for(delete_i=delete_i+1;delete_i<=q;++delete_i)//从删除位置的地址的下一个元素开始,每个往前移动一位
    	{
    		*(delete_i-1)=*delete_i;		//前一个位置等于后一个
    	}
    	L->len--;
    	
    	return OK;
    }

     

     全部程序

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXSIZE 10
    #define OK	  1
    #define FALSE 0 
    
    typedef int Elemtype;
    typedef bool Status;
    
    typedef struct list
    {
    	Elemtype *elem;
    	int len;
    	int listsize;
    }List;
    
    
    void list_init(List *L)
    {
    	L->elem=(Elemtype *)malloc(MAXSIZE*sizeof(Elemtype));//开辟空间
    	if(L->elem==NULL)//判断空间是否开辟成功
    	{
    		printf("malloc fail\n");
    		exit(0);
    	}
    
    	L->len=0;	//初始化数据有效数据为0
    	L->listsize=MAXSIZE;	//初始化数组长度为MAXSIZE
    }
    
    Status list_insert(List *L,int i,Elemtype data)
    {
    	Elemtype *base,*insert,*p;
    	if(i<1 || i>L->len+1 || L==NULL)
    	{
    		printf("位置输入错误\n");
    		return FALSE;
    	}
    	if(L->len > L->listsize)
    	{
    		base=(Elemtype *)realloc(L->elem,(L->listsize+MAXSIZE)*sizeof(Elemtype));
    		L->elem=base;
    		L->listsize+=MAXSIZE;
    	}
    	insert=&(L->elem[i-1]);//目标指针指向要插入的目标地址
    	  //指向最后一个元素的地址
    	for(p=L->elem + L->len-1;p>=insert;p--)
    	{
    		*(p+1)=*p;
    	}
    	*insert=data;
    	L->len++;
    	return OK;
    }
    
    Status list_delete(List *L,int i)
    {
    	Elemtype *aim,*p;
    	if(i<0 || i>L->len)
    	{
    		printf("位置输入错误\n");
    		return FALSE;
    	}
    	aim=&(L->elem[i-1]);//目标指针指向要删除的目标地址
    	p=(L->elem+L->len-1); //指向最后一个元素的地址
    	for(aim=aim+1;aim<=p;++aim) //目标地址滑动删除
    	{
    		*(aim-1)=*aim;
    	}
    	L->len--;
    	return OK;
    }
    void show_list(List *L)
    {
    	int i;
    	for(i=0;i<L->len;i++)
    	{
    		printf("elem[%d]=%d\n",i+1,L->elem[i]);
    	}
    	printf("\n");
    }
    int main()
    {
    	int i;
    	List L;
    	list_init(&L);
    	for(i=0;i<10;i++)
    	{
    		list_insert(&L,i+1,i+1);
    	}
    	printf("插入前的顺序表\n");
    	show_list(&L);
    
    	printf("插入后的顺序表  在5位置插入99\n");
    	list_insert(&L,5,99);
    	show_list(&L);
    
    	printf("删除后的顺序表  把5位置删除\n");
    	list_delete(&L,5);
    	show_list(&L);
    	return 0;
    }
    
    

     

    展开全文
  • 有序顺序表的插入

    千次阅读 2017-11-07 20:40:14
    6-2 有序顺序表的插入(10 分) 本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。比如:...

    6-2 有序顺序表的插入(10 分)

    本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。比如:原数据有:2 5,要插入一个元素3,那么插入后顺序表为2 3 5。要考虑扩容的问题。

    函数接口定义:

    Status ListInsert_SortedSq(SqList &L, ElemType e);
    

    裁判测试程序样例:

    //库函数头文件包含
    #include<stdio.h>
    #include<malloc.h>
    #include<stdlib.h>
    
    //函数状态码定义
    #define TRUE        1
    #define FALSE       0
    #define OK          1
    #define ERROR       0
    #define INFEASIBLE -1
    #define OVERFLOW   -2
    
    typedef int  Status;
    
    //顺序表的存储结构定义
    #define LIST_INIT_SIZE  100
    #define LISTINCREMENT   10
    typedef int ElemType;  //假设线性表中的元素均为整型
    typedef struct{
        ElemType* elem;   //存储空间基地址
        int length;       //表中元素的个数
        int listsize;     //表容量大小
    }SqList;    //顺序表类型定义
    
    //函数声明
    Status ListInsert_SortedSq(SqList &L, ElemType e);
    
    //顺序表初始化函数
    Status InitList_Sq(SqList &L)
    {
        //开辟一段空间
        L.elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));
        //检测开辟是否成功
        if(!L.elem){
            exit(OVERFLOW);
        }
        //赋值
        L.length = 0;
        L.listsize = LIST_INIT_SIZE;
    
        return OK;
    }
    
    //顺序表输出函数
    void ListPrint_Sq(SqList L)
    {
        ElemType *p = L.elem;//遍历元素用的指针
    
    	
        for(int i = 0; i < L.length; ++i){
            if(i == L.length - 1){
                printf("%d", *(p+i));
            }
            else{
                printf("%d ", *(p+i));
            }
        }
    }
    int main()
    {
        //声明一个顺序表
        SqList L;
        //初始化顺序表
        InitList_Sq(L);
    
        int number = 0;
        ElemType e;
    
         scanf("%d", &number);//插入数据的个数 
    
        for(int i = 0; i < number; ++i)
        {
    	scanf("%d", &e);//输入数据
            ListInsert_SortedSq(L, e);
        }
    
        ListPrint_Sq(L);
    
        return  0;
    }
    
    
    /* 请在这里填写答案 */
    

    输入格式:第一行输入接下来要插入的数字的个数第二行输入数字输出格式:输出插入之后的数字

    输入样例:

    5
    2 3 9 8 4
    

    输出样例:

    2 3 4 8 9
    

    以下为代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    //函数状态码定义
    #define TRUE        1
    #define FALSE       0
    #define OK          1
    #define ERROR       0
    #define INFEASIBLE -1
    #define OVERFLOW   -2
    
    //顺序表的存储结构定义
    #define LIST_INIT_SIZE  100
    #define LISTINCREMENT   10
    typedef int Status;
    typedef int ElemType;
    
    typedef struct{
        ElemType *elem;
        int length;
        int listsize;
    }SqList;
    
    Status ListInsert_SortedSq(SqList &L, ElemType e);
    Status InitList_Sq(SqList &L);
    void ListPrint_Sq(SqList L);
    
    Status ListInsert_SortedSq(SqList &L,ElemType e)
    {
        ElemType *p = L.elem, *q;
        if(L.length >= L.listsize)
        {
            L.elem = (ElemType*)realloc(L.elem,(L.listsize + INFEASIBLE)*sizeof(ElemType));
            if(!L.elem)
                exit(OVERFLOW);
            L.listsize += INFEASIBLE;
        }
        while(*p < e && p <= L.elem+L.length-1)
            ++p;
        for(q = L.elem+L.length-1; q >= p; q--)
            *(q+1) = *q;
        *p = e;
        ++L.length;
        return OK;
    }
    Status InitList_Sq(SqList &L)
    {
        int n;
        L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
        if(!L.elem)
            exit(OVERFLOW);
        L.length = 0;
        L.listsize  = LIST_INIT_SIZE;
        return OK;
    }
    void ListPrint_Sq(SqList L)
    {
        ElemType *p = L.elem;//遍历元素用的指针
    
    
        for(int i = 0; i < L.length; ++i){
            if(i == L.length - 1){
                printf("%d", *(p+i));
            }
            else{
                printf("%d ", *(p+i));
            }
        }
    }
    
    int main()
    {
        //声明一个顺序表
        SqList L;
        //初始化顺序表
        InitList_Sq(L);
    
        int number = 0;
        ElemType e;
    
         scanf("%d", &number);//插入数据的个数
    
        for(int i = 0; i < number; ++i)
        {
    	scanf("%d", &e);//输入数据
            ListInsert_SortedSq(L, e);
        }
    
        ListPrint_Sq(L);
    
        return  0;
    }
    


    展开全文
  • 顺序表的插入操作 (10 分) 本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元素e,插入成功后顺序表的长度加1,函数返回值为1;插入失败函数返回值为0; 函数接口定义: int ListInsert(SqList &...

    顺序表的插入操作 (10 分)

    本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元素e,插入成功后顺序表的长度加1,函数返回值为1;插入失败函数返回值为0;

    函数接口定义:

    int ListInsert(SqList &L,int i,ElemType e);
    

    其中SqList结构定义如下:

    typedef struct{
    	ElemType *elem;
    	int length;
     }SqList;
     
    

    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    #define MAXSIZE 5
    typedef int ElemType;
    typedef struct{
    	ElemType *elem;
    	int length;
     }SqList;
    void InitList(SqList &L);/*细节在此不表*/
    int ListInsert(SqList &L,int i,ElemType e);
    int main()
    {
    	SqList L;
    	InitList(L);
    	ElemType e;
    	int i;
    	scanf("%d%d",&i,&e);
    	int result=ListInsert(L,i,e);
    	if(result==0){
    		printf("Insertion Error.The value of i is unlawful or the storage space is full!");	
    	}else if(result==1){
    		printf("Insertion Success.The elements of the SequenceList L are:");	
    		for(int j=0;j<L.length;j++){
    			printf(" %d",L.elem[j]);
    		}
    	}
    	return 0;
    }
    /* 请在这里填写答案 */
    

    输入格式:

    输入数据有1行,首先给出以-1结束的顺序表元素值(不超过100个,-1不属于顺序表元素),然后是插入位置和被插入元素值。所有数据之间用空格分隔。

    输入样例:

    2 6 4 -1 2 100
    

    输出样例:

    Insertion Success.The elements of the SequenceList L are: 2 100 6 4
    
    
    【代码】
    int ListInsert(SqList &L, int i, ElemType e)
    {
    	if (i >= 0 && i <= L.length+1 && (L.length + 1) <= MAXSIZE)
    	{
    		for (int j = L.length-1; j >= i - 1; j--)
    			L.elem[j + 1] = L.elem[j];
    		L.elem[i - 1] = e;
    		L.length++;
    		return 1;
    	}
    	return 0;
    }
    
    【解析】

    在第一个if的判断语句中,应是 i <= L.length+1,做题的时候写的是 i <= L.length,所以导致一个测试点一直错。

    展开全文
  • 顺序表的插入和删除

    2020-05-28 20:41:18
    顺序表的插入和删除 一、首先了解到线性表两种存储方式,一种是顺序表的形式,另一种是链表的形式。顺序表的特点是元素按顺序存放且地址连续。 1.顺序表的插入 Size是实际的元素个数,到i这个位置后每一个往后移一个...
  • 顺序表的插入运算

    千次阅读 2018-03-30 17:46:04
    顺序表的插入运算 Time Limit 3000ms ,Memory Limit 10000KB Description 已知顺序表L递增有序,编写程序,将X插入到线性表的适当位置上,以保持线性表的有序性。 Input 第一行输入顺序表元素个数...
  • 顺序表的插入与删除

    2020-05-28 16:04:22
    顺序表的插入与删除 开发工具与关键技术:Visual Studio 2015、算法 作者:易金亮 撰写时间:2020.05.28 今天我们就来说说线性表中顺序表的插入与删除,首先我们先认识一下什么是线性表,线性表是由n(n>=)个...
  • 顺序表的 插入删除操作的源程序。 顺序表的 插入和删除在C编译器上的 运行代码。
  • 顺序表的插入删除操作(源程序通过上机测试)。
  • 顺序表的插入删除查找遍历 文章目录顺序表的插入删除查找遍历代码运行结果截图 代码 #define Maxsize 100 typedef int ElemType; typedef struct{ ElemType data[Maxsize]; int length; }Sqlist; void Create...
  • C语言顺序表的插入元素 #include<stdio.h> #include<math.h> // #define 定义一个标识符来表示一个常量 #define OK 1 #define ERROR -1 #define MAX_SIZE 100 // typedef 关键字来定义自己习惯的数据...
  • 数据结构:顺序表的插入算法 public void insert(int index,object element) throws Exception{ if(size == maxSize){ throws new Exception(“顺序表已满无法插入!”)} if(index<0||index>maxSize){ ...
  • 实现顺序表的插入,删除,查找,输出操作在C语言中经常用到。下面小编给大家整理实现代码,一起看下吧代码如下所示:#includeusing namespace std;#define MAXSIZE 15typedef int DataType;typedef struct{DataType ...
  • 顺序表——有序顺序表的插入

    千次阅读 2017-11-10 11:13:16
    本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。 比如:原数据有:2 5,要插入一个元素3,那么...
  • 顺序表的插入运算 顺序表上完成插入运算的步骤如下: 将第n个至第i个位置的元素顺序向后移动一个位置,为新元素空出第i个位置。 将x置入空出的第i个位置。 表长加1。 代码实现 int Insert_SeqList (SeqList *L,...
  • 顺序表的插入描述先读入数据建立顺序表va,表中的数据元素递增有序,再读入一个整数x,将它插入到顺序表中的适当位置,并保持顺序表的有序性。输入先输入一个小于100的正整数n,紧接着读入n个从小到大的正整数,建立...
  • 顺序表的基本操作——插入、删除1、顺序表的基本操作——插入ListInsert(&L,i,e):插入操作。在表中的第i个位置上插入指定元素e。#include#define MaxSize 10//定义最大长度typedef struct {int data[MaxSize];//...
  • 顺序表的插入和删除(数据结构)

    万次阅读 多人点赞 2019-07-23 16:18:58
    顺序表的插入和删除是数据结构中比较基础的,在插入部分要能够做到在数组头部插入数据,在尾部插入数据,以及在指定位置插入指定数据。在删除部分要能够做到删除尾部数据,删除头部数据,删除指定位置的数据。 2....
  • 本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。 比如:原数据有:2 5,要插入一个元素3,...
  • 顺序表的插入,删除算法

    千次阅读 2015-10-11 12:37:05
    1,顺序表的插入算法:  算法描述:在一个顺序表的第i个元素前插入元素e,并打印新的顺序表中的元素#include #include #define SIZE 100 #define INCREMENT_SIZE 10 typedef struct { int *elem; int length; ...
  • PTA 6-2 有序顺序表的插入

    千次阅读 2017-10-15 18:27:46
    6-2 有序顺序表的插入(10 分)本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。 比如:原数据...
  • 6-2 有序顺序表的插入 (10分) 本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。 比如:原...
  • 顺序表的插入和删除操作

    千次阅读 2018-05-19 15:33:34
    * 顺序表的插入和删除 */ #include&lt;stdio.h&gt; int main() { int l[50]; int n=10,i; for(i=1;i&lt;=n;i++){ l[i-1] = i; } printf("初始化一个有十个元素的线性表\n"); for...
  • 顺序表的插入、删除操作;顺序表的排序;顺序表的查找最大值;顺序表的归并操作,基本涵盖了顺序表的所有基本操作。 这个程序都是最简化的版本,日后可以拓展功能,比如可以从键盘键入数据来初始化顺序表等等。 介绍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,283
精华内容 6,913
关键字:

顺序表的插入