C语言--线性表的顺序存储的实现

//线性表的顺序存储的实现
#include  <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct MArrayList{
   int last;
   int data[SIZE];
};

struct MArrayList *getMArrayList(){
		struct MArrayList *m1 = (struct MArrayList*)malloc(sizeof(struct MArrayList));
		if(NULL!=m1){
        	m1->last=-1;
		}
		return m1;
}

/**
在末尾添加一个数据 
*/
void add(struct MArrayList  *m,int value){
    m->last++;
	m-> data[m->last] = value;
	printf("%d %d \n",m->last,m-> data[m->last]);
}

/**
在任意位置插入一个数据 
*/ 
void insert(struct MArrayList  *m,int value,int position){
	int i; 
	for(i=m->last+1;i>position;i--){
		m->data[i]=m->data[i-1];//从position开始 所有的数据向后移动一位 ,从最后一位开始移动 
	}
	m->data[position]=value;
	m->last++;
	
}
/**
按照值删除一个数据 
*/ 
int deleteByValue(struct MArrayList *p,int value){
	int i;
	for(i=0;i<p->last+1;i++){
		if(value==p->data[i]){
			int j;
			for(j=i;j<p->last+1;j++){//把删除位置后面的所有数据向前移动一位 移动从前面开始 
				p->data[j]=p->data[j+1];
			
			} 
				p->last--;
				return 1;
		}
	}
		return 0;
}

/**
打印表的信息 
*/
void print_info(struct MArrayList *p){
	int i;
	for(i=0;i<p->last+1;i++){
		printf("%d \n",p->data[i]);
	}	
	printf("size=%d \n",p->last+1);
}
/**
测试 
*/
void test(){
struct MArrayList *m1 =getMArrayList();
if(NULL==m1){
	printf("memery is not enought");
	return;
}
	add(m1,30);
	add(m1,31);
	add(m1,32);
	add(m1,33);		
	add(m1,34);
	add(m1,35);
	deleteByValue(m1,34);
	deleteByValue(m1,30);
	insert(m1,99,2);
	insert(m1,100,2);
	print_info(m1);	
} 

int main(int argc, char *argv[]){
	test();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值