栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言数据结构顺序表基本操作之插入删除添加元素打印完整代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言数据结构顺序表基本操作之插入删除添加元素打印完整代码

#include
#include
#include
#define OK 1
#define ERROR -1
#define LISTSIZEMAX 10
#define  LISTSIZE 5

typedef int ElemType;

typedef struct {
	ElemType *elem;
	int length;
	int size;
} List;
//初始化 
int CreatList(List *L) {
	L->elem = (ElemType*)malloc(sizeof(ElemType)*LISTSIZE);
	if(!(L->elem)) {
		return ERROR;
	}
	L->length = 0;
	L->size=LISTSIZEMAX;
	return OK;
}
//打印 
int PrintfList(List *L) {
	if(L->length==0) {
		printf("顺序表为空!");
		return ERROR;
	}
	int i;
	for(i=0; ilength; i++) {
		printf("%d ",L->elem[i]);
	}
	printf("n");
}
//添加元素 
void AddListDate(List *L,int n) {
	int i;
	srand(time(0));
	for(i=0; ielem[i]=rand()%1000;
		L->length++;
	}
	PrintfList(L);
}
//插入元素 
int ListInsert(List *L,int i,ElemType e) {
	int j,newsize;
	if(i<1||i>L->length+1)
		return ERROR;
	if(L->length>=L->size) {
		ElemType *newbase;
		newsize=(L->size+LISTSIZEMAX)*sizeof(ElemType);//(L.size+LISTSIZEMAX)个ElemType 空间
		newbase=(ElemType*)realloc(L->elem,newsize);//指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。
		if(!(newsize))
			return ERROR;
		L->elem=newbase;
		L->size+=LISTSIZEMAX;
	}
	for(j=L->length-1; i-1<=j; j--)
		L->elem[j+1]=L->elem[j];
	L->elem[i-1]=e;
	L->length++;
	return OK;

}
//删除元素 
int ListDelete(List*L,int i,int &e1){
	int j;
	if((i<1)||(i>L->length))
	return ERROR;
    e1=L->elem[i-1];
	for(j=i;L->length-1>=j;j++)
	L->elem[j-1]=L->elem[j];
	L->length--;
	return OK;;
} 

int main(void) {
	//初始化 
	int n;
	printf("请输入顺序表初始化数据个数:");
	scanf("%d",&n);
	List L;
	CreatList(&L);
	AddListDate(&L,n);
	PrintfList(&L);
	//插入 
	int i;
	ElemType e;
	printf("请输入顺序表插入位置及插入数据:");
	scanf("%d%d",&i,&e);
	ListInsert(&L,i,e);
	PrintfList(&L);
	//删除
	 int j,e1;
	printf("请输入顺序表删除位置:");
	scanf("%d",&j);
	ListDelete(&L,j,e1);
	printf("删除数据为:%dn",e1);
	PrintfList(&L);
	return 0;
}

插入算法:

int ListInsert(List *L,int i,ElemType e) {
	int j,newsize;
	if(i<1||i>L->length+1)
		return ERROR;
	if(L->length>=L->size) {
		ElemType *newbase;
		newsize=(L->size+LISTSIZEMAX)*sizeof(ElemType);//(L.size+LISTSIZEMAX)个ElemType 空间
		newbase=(ElemType*)realloc(L->elem,newsize);//指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。
		if(!(newsize))
			return ERROR;
		L->elem=newbase;
		L->size+=LISTSIZEMAX;
	}
	for(j=L->length-1; i-1<=j; j--)
		L->elem[j+1]=L->elem[j];
	L->elem[i-1]=e;
	L->length++;
	return OK;

}

删除算法:

int ListDelete(List*L,int i,int &e1){
	int j;
	if((i<1)||(i>L->length))
	return ERROR;
    e1=L->elem[i-1];
	for(j=i;L->length-1>=j;j++)
	L->elem[j-1]=L->elem[j];
	L->length--;
	return OK;;
} 

 打印算法:

int PrintfList(List *L) {
	if(L->length==0) {
		printf("顺序表为空!");
		return ERROR;
	}
	int i;
	for(i=0; ilength; i++) {
		printf("%d ",L->elem[i]);
	}
	printf("n");
}

添加元素算法:

void AddListDate(List *L,int n) {
	int i;
	srand(time(0));
	for(i=0; ielem[i]=rand()%1000;
		L->length++;
	}
	PrintfList(L);
}

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号