顺序表实现的源码

#include<stdio.h>

#include<stdlib.h>

#define MAXSIZE 10

//定义类型 typedef int DataType;

//定义结构体 typedef struct { DataType list[MAXSIZE];//d定义DateType类型的数组

int size;//y用于记录数据的个数 

} SeqList;

void InitList(SeqList *l);//初始化

int length(SeqList l);//线性表的长度

int InsertList(SeqList *l,int i,DataType x);//在第i个元素前插入0<=i<size

int DeleteList(SeqList *l,int i,DataType *x);//删除第i个元素

DataType GetElement(SeqList *l,int i);//得到第i个元素

int main(void) {

 SeqList l;

InitList(&l);

int j;//定义循环变量 
for(j=0;j<10;j++){
InsertList(&l,j,j+1); 	
}

printf("取得%d\n",GetElement(&l,1));

int x=0; DeleteList(&l,9,&x); printf("%d\n",length(l));

int i;//定义循环变量 

for(i=0;i<l.size;i++){
	printf("打印%d\n",l.list[i]);
}

}

void InitList(SeqList* l){ l->size=0; }

int length(SeqList l){ return l.size;

}

int InsertList(SeqList * l,int i,DataType x){

//将i可以理解为将x插入i个元素前插入,也可以理解为将x插入list[i]中 

if(i<0||i>MAXSIZE){
	printf("输入的位置有误\n");
	printf("插入失败\n");
	return 0;
}

if(i==MAXSIZE){
	printf("顺序表已满\n");
		printf("插入失败\n");
	return 0;
}

int j;//定义循环变量
for(j=l->size;j>i;j--)
l->list[j]=l->list[j-1]; 

l->list[i]=x;//将要插入的元素插入

l->size++;//将书序表的长度加1 
	printf("插入成功\n");
return 1;	

}

int DeleteList(SeqList *l,int i,DataType *x){ if(i<0||i>=MAXSIZE){ printf("删除位置有误\n"); printf("删除失败\n"); return 0; }

if(l->size==0){
	printf("表空,无法删除\n");
		printf("删除失败\n");
	return 0;
}

int j;//设置循环变量
*x=l->list[i];
for(int j=i;j<l->size-1;j++){
	l->list[j]=l->list[j+1];
} 
l->size--;
printf("删除成功\n");
return 1;

}

DataType GetElement(SeqList* l,int i){

return l->list[i];

}

转载于:https://my.oschina.net/u/2511906/blog/1622392

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值