【数据结构 线性表. 顺序表 插入 删除】

本文详细介绍如何在C语言中实现顺序表的插入与删除操作,包括初始化、边界检查和调整元素位置的过程,适合初学者理解线性表数据结构的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构 线性表. 顺序表 插入 删除

顺序表 删除 插入:

#include<stdio.h>
#include"demo2.h"
#include<stdlib.h>
/*  线性表的顺序表示定义如下:
*/

#define  LIST_INIT_SIZE 8 //初始容量8
#define N 3

typedef Status;//定义 状态
#define OK
#define ERROR


typedef int ElemType; //自定义类型
typedef struct seqList {
	int length; //顺序表的长度
	int listsize; //顺序表最大允许长度
	ElemType * element;  //自定义类型 可以是int float .etc
}SeqList;




/*创建函数 */
Status initSeqList(SeqList* seq) {
	seq->element = (int*)malloc(LIST_INIT_SIZE * sizeof(int)); //分配存储空间,malloc函数用来分配,element用来保存我们分配的空间的地址//
	if (!seq->element){
		exit(0);
	}
	seq->length = 0;
	seq->listsize = LIST_INIT_SIZE;
	return OK;
}


/* 打印线性表*/

Status printSeqList(SeqList *seq ) {

	for (int i = 0; i <seq->length; i++){
		printf("%d", seq->element[i]);
	}
	return 0;
}


/* 插入元素*/
Status insert(SeqList* L, int i, ElemType x) {

	if (i<-1 || i>L->length - 1) {   //判断i的取值是否在-1到n-的范围之内,判断下标是否越界
		return ERROR;
	}
	if (L->length == L->listsize) {  //判断顺序表是否已经存满
		return ERROR;
	}
	for (int j = L->length - 1; j >=i; j--) {
		L->element[j + 1] = L->element[j];
	}
		L->element[i] = x;//插入到第i个位置
		L->length = L->length + 1;  //表长+1

		return OK;
}


//删除元素
Status delete (SeqList* L, int i) {
	if (i<0||(i>L->length-1)){  //判断i是否越界
		return ERROR;
	}
	if (!L->length){           //判断顺序表是否为空
		return ERROR;
	}

	for (int j = i; j < L->length; j++) {
		L->element[j] = L->element[j+1];
	}
  	L->length--;
	
	return OK;
}

int main() {
	SeqList seq;
	int i, len;
	initSeqList(&seq);
	printf("请输入线性表的长度:   ");

	scanf_s("%d", &len);
	seq.length = len;
	printf("请输入线性表的元素:   ");
	for (i = 0; i < len; i++) {
		scanf_s("%d", seq.element + i);
		seq.listsize--;          //每输入一个元素,存储空间也就会相对的减少//
	}

	//插入前线性表元素
	printf("插入前线性表的元素:   \n");
	printSeqList(&seq);

	printf("\n插入后线性表的元素:   \n");
	insert(&seq, 6,9);
	printSeqList(&seq);

}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青北念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值