顺序表

原创 2018年04月15日 15:16:37



#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
收藏助手
不良信息举报
您举报文章:顺序表
举报原因:
原因补充:

(最多只允许输入30个字)