数据结构-顺序表的基本操作

1.顺序表的定义 2.顺序表的初始化 3.顺序表元素增删改查 <!--more--> #include<stdio.h>

#define MAXSIZE 20
typedef int ElemType;

typedef struct
{
	ElemType data[MAXSIZE];
	int length;
	
	
}SeqList;

SeqList init_list(){//初始化
	SeqList L;
	L.length =0;

	return L;
}

int list_length(SeqList *L){//获取长度
	return L->length;
}

int get_element(SeqList L,int i){//根据序号查找元素
	if(i<1 || i>L.length){
		printf("序号超出范围");
		return -1;
	}
	return L.data[i-1];
	
	
}

int list_locate(SeqList L,ElemType x){//根据元素查找位置
	int i;
	for(i=0; i<L.length;i++)
		if(L.data[i]==x)
			return (i+1);
		
		
		return -1;//未找到
		
}

void list_insert(SeqList *L, ElemType x,int i){ //插入元素
	
	int j;
	if (L->length == MAXSIZE)  printf("溢出,不能插入 \n");
	else if(i<1 || i > L->length+1) printf("插入范围出错 \n");
	else { for(j=L->length-1; j>=i-1; j--)
		L->data[j+1] =L->data[j];
	L->data[i-1] =x;
	L->length++;
	
	
	}
	
}

void list_delete(SeqList *L,int i){//删除元素
	int j;
	if(L->length<=0) printf("空表,无法删除元素");
	if(i>L->length || i<=0) printf("删除位置出错");
	else {
		for(j=i;j<=L->length-1;j++)
			L->data[j-1] =L->data[j];
		L->length--;
	}
	
	
}


SeqList list_scanf(SeqList L){ //创建链表
int x;
int i;
	printf("请输入顺序表的元素(-1结束)");
	for(i=0;;i++){
		scanf("%d",&x);
		if(x==-1){
			break;
		}
 L.data[L.length] = x;
 L.length++; 
	}

	return L;
}

void list_print(SeqList L){//打印链表
	int k;
	printf("顺序表的元素有:");
	for(k = 0; k<L.length;k++){
		printf("%3d ",L.data[k]);
	}
	printf("\n");

}


int main(){
		int pos;
		int key;
	SeqList L = init_list();
	L = list_scanf(L);

	list_insert(&L, 3, 2);

//	list_delete(&L,1);
	 //pos= list_locate(L,2);
//	printf("查找到该元素位于:%d \n",pos);
//key = get_element(L,3);
//printf("该元素为:%d \n",key);
	list_print(L);
	printf("length:%d \n",list_length(&L));
	return 0;
	
}
文章目录
|