顺序表插入删除算法用C语言来实现

Posted 11forevercute

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表插入删除算法用C语言来实现相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

#include<stdlib.h>

//-------- 线性表的动态分配顺序存储结构 -----------

int LIST_INIT_SIZE=100;   //顺序表存储空间初始尺寸

int LISTINCREMENT=10;  //顺序表存储空间分配增量

typedef  int  ElemType;          //顺序表元素的数据类型为整数

//存储结构定义:顺序表

typedef struct

       ElemType *elem;  //存储线性表元素的数组

       int length;        //表长度

       int listsize;       //存储容量

       int incrementsize;  //扩展增量

SqList;

//-------- 线性表的基本运算 -----------------------------

//辅助函数:显示顺序表元素

void print_Sq (SqList L)

       for(int i=0; i<L.length; i++)  printf("%5d", L.elem[i]);

       printf("\n");

//运算1:初始化空顺序表L

void InitList_Sq(SqList *L, int initsize, int incresize) // 算法2.4

  L->elem = (ElemType *)malloc(initsize*sizeof(ElemType)); //分配数组空间

  L->length=0;  //表长度初值为0

  L->listsize=initsize; //表空间初始尺寸

  L-> incrementsize = incresize;

//运算2:销毁顺序表L// 算法2.8

void DestroyList_Sq(SqList *L)

  free(L->elem); //释放表的数组存储空间

       L->elem=NULL; //清空指向数组的指针及表示表长度、数组尺寸的指示变量

       L->length=0;

       L->listsize=0;

//运算3:在顺序表L中第i个位置前插入新元素e

void ListInsert_Sq (SqList *L,  int i,  ElemType  e)

if(i < 1 || i > L->length+1)

        return ERROR;//   i值不合法

       //动态扩展空间,每次空间不足,空间长度增加 LISTINCREMENT

    if(L->length == L->listsize)

   

        ElemType * increspace = (ElemType *)realloc(L->elem,(L->listsize + LISTINCREMENT) * sizeof(ElemType));

        if(! increspace)

            exit(OVERFLOW);

        L->elem = increspace;

        L->listsize += LISTINCREMENT;

   

       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 OK;

//运算4:在顺序表L中删除第i个元素,用输出变量e返回其值

void ListDelete_Sq (SqList *L,  int i,  ElemType*  e) //算法2.7

       *e=L->elem[i-1];

       printf("删除的第%d的元素为:%d\n",i,*e);

       for(int j=i-1;j<L->length;j++)

      

              L->elem[j]=L->elem[j+1];

      

       L->length--;

//运算5:在顺序表L中找到第i个值与e相等的元素,返回其位序,否则返回0

int LocateElem_Sq (SqList  L,  ElemType  e) //算法2.5

for(int i=0;i<L.length;i++)

      

              if(L.elem[i]==e)

                     return i+1;

      

       return 0;

以上是关于顺序表插入删除算法用C语言来实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构 c语言版 ——顺序表的查找、插入与删除

用C语言实现线性表的顺序存储(创建,插入,删除和查找)

数据结构初阶:动态顺序表的功能实现(用C语言实现,附图分析)

如何用JAVA语言建立含有若干个元素的顺序表,并实现插入,删除,查找等基本操作

用C语言建立一个顺序存储的线性表并实现线性表的插入和删除操作

《线性表的插入和删除算法实现》以及《栈和队列的插入和删除算法实现》的c语言代码