C语言线性表顺序映像


#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE 1
#define DataType int
typedef struct SequenceList{//线性表顺序映像结构 
	int MAXNUM;//顺序表的最大存储空间 
	int n;//当前元素个数 
	DataType *Elemnet;//元素类型 
}*SeqList;

SeqList seq_initialize(){//初始化 
	SeqList list=(SeqList)malloc(sizeof(struct SequenceList));
	if(!list){
		printf("overflow !!");
		return (void *)0;
	}
	list->Elemnet=(DataType *)malloc(list->MAXNUM*sizeof(DataType));
	list->MAXNUM=100;
	list->n=0;
	printf("initialize ok!\n");
	return list;
}
int seq_insert_element(SeqList list,int index,int value){//在下标为index的元素之前插入value 
	int temp;
	if(index>=list->MAXNUM){
		printf("OVERFLOW!!");
		return FALSE;
	}

	if(index>=list->n||list->n==0){//没有元素或者index之后没有元素 
		printf("The index is not data area,inserting at the last!\n");
		list->Elemnet[list->n]=value;
		list->n++;
		return TRUE;
	}
		for(temp=list->n;temp>=index;temp--){//元素移动
			list->Elemnet[temp]=list->Elemnet[temp-1];
	}
	list->Elemnet[index]=value;
	list->n++;
	return TRUE; 
}

void seq_cross(SeqList list){//遍历顺序映像 
	int i;
	for(i=0;i<list->n;i++){
		printf("%d:%d\n",i,list->Elemnet[i]);
	}
}

int seq_delete_element(SeqList list,int index){//删除下标为index的元素 
	int temp;
if(index>=list->n){
	printf("no element index exists !!\n");
	return FALSE;
}
for(temp=index+1;temp<list->n;temp++){
	list->Elemnet[temp-1]=list->Elemnet[temp];
}
list->n--;	
} 

int seq_locate_element(SeqList list, DataType x){
	int temp;
	if(list->n==0){
	printf("empty list!");
	return FALSE;
}
for(temp=0;temp<list->n;temp++){
	if(list->Elemnet[temp]==x)
	return temp;
}
printf("no such x value!\n");
return FALSE;
}
int main(){//测试 
	
	SeqList list =seq_initialize(list);
	for(int i=0;i<20;i++){
		seq_insert_element(list,i,i+1);
	}
	seq_cross(list);
	printf("%d\n",seq_locate_element(list,14));
	seq_delete_element(list,13);
	seq_cross(list);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值