顺序表插入、删除算法用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;

}

原文地址:https://www.cnblogs.com/11forevercute/p/11025825.html

时间: 2024-10-08 19:09:12

顺序表插入、删除算法用C语言来实现的相关文章

顺序表之删除算法

public class delTest { /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        int alist[]=new int[10];        alist[0]=1;        alist[1]=2;        alist[2]=3;        alist[3]=4;     

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

#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

数据结构线性表插入删除的示例

昨天留的作业,数据结构书和c语言书真的不一样,需要自己加加补补,今天写的时候迷迷瞪瞪的,反正在我电脑上能用. 数据结构线性表插入删除的示例: 代码: #include<iostream> #include<cstdio> using namespace std; #define list_init_size 100 #define listincrement 10 typedef struct { int *elem; int length; int listsize; }sqli

顺序表之删除表中元素最小值

1 #include<stdio.h> 2 #define MAX 10//表的长度为10 3 typedef int ElementType; 4 int length=0; 5 int value,pos;//记录值和位置 6 typedef struct { 7 ElementType i; 8 int length; 9 ElementType data[MAX]; 10 }Sorder; 11 //主要删除最小值的函数代码 ,由此可见删除了最小值1,位于数组0的位置 12 bool

2. 顺序表 数据结构与算法(python)

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

【转载】顺序表中删除为x的所有元素,时间空间复杂度有要求

解法一: 首先确定顺序表L中的第一个值为x的元素位置i,然后依次检查L.data[i+1]~L.data[L.length-1]中每个元素L.data[j](i+1<=j<L.length),若L.data[j]!=x,则将L.data[j]存入L.data[i]中,并令i增1.最后顺序表长度为i.算法如下: void delall(Sqlist *l,int x) { int i=0,j; while(i<l->length && l->data[i]!=x

数据结构-顺序表插入元素时扩容问题

本程序是双倍扩容 顺序表类定义: 1 template<class T> 2 class SeqList :public Linearlist<T> 3 { 4 public: 5 SeqList(int mSize); 6 ~SeqList() 7 { 8 delete[] elements; 9 } 10 bool Insert(int i, T x); 11 private: 12 int maxLength; 13 T *elements; 14 }; 15 16 temp

顺序表的冒泡排序算法及二分法查找代码实现

本文主要实现了比较经典的冒泡排序算法(对已经有序或者基本有序的顺序表复杂度大大降低),和二分法查找,各位看官看代码吧 //冒泡排序算法及二分法查找 #include "stdio.h" typedef struct { int key; }SSTable_Elem_Type; typedef struct { SSTable_Elem_Type*elem; int length; }SSTable_Typedef; void Bubble_Sort(SSTable_Typedef*ST

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

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