冰小冰_wybing

冰小冰,一只想飞的小菜鸟!

顺序表



#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MaxSize 10
typedef int ElemType;	//将int定义位ElemType 

typedef struct{
int *elem;
int length;
int listsize;
}Sqlist;

/*
初始化一个顺序表
参数L:Sqlist类型的指针 
*/
void initSqlist(Sqlist *L){
	L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
	if(!L->elem) exit(0);
	L->length=0;
	L->listsize=MaxSize; 
} 
/*
向顺序表中插入元素
参数L:Sqlist类型的指针
参数i:插入元素的位置
参数item:插入的元素 
*/
void InsertElem(Sqlist *L,int i,ElemType item){
	//向顺序表L中第i个位置上插入元素item
	ElemType *base,*insertPtr,*p;
	if(i<1||i>L->length+1) exit(0);
	if(L->length>=L->listsize){
		base=(ElemType*)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));
		L->elem=base;
		L->listsize=L->listsize+100;
	} 
	insertPtr=&(L->elem[i-1]);
	for(p=&(L->elem[L->length-1]);p>=insertPtr;p--)
		*(p+1)=*p;
	*insertPtr=item;
	L->length++;
} 
/*
从顺序表中删除元素
参数L:Sqlist类型的指针
参数i:删除元素的位置 
*/
void DelElem(Sqlist *L,int i){
	//从顺序表L中删除第i个元素
	ElemType *delItem,*q;
	if(i<1||i>L->length) exit(0);
	delItem=&(L->elem[i-1]);
	q=L->elem+L->length-1;
	for(++delItem;delItem<=q;++delItem)
	*(delItem-1)=*delItem;
	L->length--;
}
int main(){
	Sqlist l;
	int i;
	initSqlist(&l);
	for(i=0;i<15;i++)
		InsertElem(&l,i+1,i+1);
	printf("\nThe content of the list is \n");
	for(i=0;i<l.length;i++)
		printf("%d\t",l.elem[i]);
	DelElem(&l,5);
	printf("\nDelete the fifth element\n");
	for(i=0;i<l.length;i++)
		printf("%d\t",l.elem[i]);
	getche();
}

阅读更多
版权声明:本人菜鸟一只,如文章有错误或您有高见,请不吝赐教 https://blog.csdn.net/qq_41138935/article/details/79949544
个人分类: 算法与数据结构
上一篇51Nod-1019-逆序数
下一篇1057 N的阶乘
想对作者说点什么? 我来说一句

线性表中顺序表的增删改查

2010年06月21日 2KB 下载

数据结构实验——顺序表

2010年12月22日 197KB 下载

顺序表源码

2011年09月26日 144KB 下载

顺序表基本操作

2017年04月14日 3KB 下载

顺序表代码

2017年12月26日 780B 下载

顺序表头文件顺序表头文件

2009年12月04日 1KB 下载

没有更多推荐了,返回首页

关闭
关闭