ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

顺序表

2021-10-29 14:04:51  阅读:170  来源: 互联网

标签:顺序 return int seqlist pos NULL data


1. 头文件

#ifndef __SEQLIST_H__
#define __SEQLIST_H__

#define MAXSIZE 100

typedef int data_t;
typedef struct {
	data_t data[MAXSIZE];
	int last;// 数据的下标 
}seqlist_t;

seqlist_t* create_seqlist(void);
void clear_seqlist(seqlist_t *L);

int is_empty_seqlist(seqlist_t *L);
int is_full_seqlist(seqlist_t *L);
void set_empty_seqlist(seqlist_t *L);
int get_length_seqlist(seqlist_t *L);
void show_seqlist(seqlist_t *L);

int insert_seqlist(seqlist_t *L,data_t x,int pos);
int delete_seqlist(seqlist_t *L,int pos);
int change_seqlist(seqlist_t *L,data_t x,int pos);
int search_seqlist(seqlist_t *L,data_t x);
#endif

2. 方法实现

2.1 创建顺序表

//创建表, 新建了 元素为 MAXSIZE 个 顺序表
seqlist_t *create_seqlist(void){
	seqlist_t *L = NULL;
	//malloc 返回void * ,需要强制转换
	L = (seqlist_t *)malloc(sizeof(seqlist_t));
	if(L == NULL){
		puts("no memory");
		return NULL;
	}
	L->last = -1;
	return L;
}

2.2 清空表

//清空表
void clear_seqlist(seqlist_t *L){
	if(L == NULL){
		puts("seqlist is NULL");
		return;
	}
	free(L);
	return;
}

2.3 判断顺序表是否为空

int is_empty_seqlist(seqlist_t *L){
	if(L == NULL){
		puts("seqlist is empty");
		return -1;
	}	
	return (L->last == -1);
}

2.4  设置顺序表为空

void set_empty_seqlist(seqlist_t *L){
	if(L == NULL){
		puts("seqlist is NULL");
		return;
	}
	L->last = -1;
	return;
}

2.5 获取长度

int get_length_seqlist(seqlist_t *L){
	if(L == NULL){
		puts("seqlist is NULL");
		return -1;
	}
	return (L->last+1);
}

2.6 判断表是否已满

int is_full_seqlist(seqlist_t *L){
	if(L == NULL){
		puts("seqlist is NULL");
		return -1;
	}
	return (L->last == MAXSIZE -1);

}

2.7 打印表

void show_seqlist(seqlist_t *L){
	int i=0;
	if(L == NULL){
		puts("seqlist is NULL");
		return;
	}
	for(i=0;i<=L->last;i++){
		printf("L->data[%d] = %d\n",i,L->data[i]);
	}
	return;

}

2.8 在指定位置插入元素

int insert_seqlist(seqlist_t *L,data_t x,int pos){
	int i = 0;
	if((is_full_seqlist(L))||(pos < 0)||(pos > L->last+1)){
		puts("input argv is invalid");
		return -1;
	}
	for(i=L->last;i>=pos;i--){
		L->data[i+1] = L->data[i];
	}
	L->data[pos] = x;
	L->last++;
	return 0;
}

2.9 删除指定位置的元素

int delete_seqlist(seqlist_t *L,int pos){
	int i = 0;
	if((pos<0) ||(pos>L->last+1)){
		puts("input argv invalid");
		return -1;
	}
	for(i=pos+1;i<=L->last;i++){
		L->data[i-1]=L->data[i];
	}
	L->last--;
	return 0;
}

2.10 改变指定位置的元素

int change_seqlist(seqlist_t *L,data_t x,int pos){

	if((pos<0) ||(pos>L->last+1)){
		puts("input argv invalid");
		return -1;
	}
	L->data[pos] = x;
	return 0;
}

2.11 查找元素对应坐标

int search_seqlist(seqlist_t *L,data_t x){
	int i=0;
	for(i=0;i<=L->last;i++){
		if(L->data[i] == x){
			return i;
		}
	}
	return -1;
}

标签:顺序,return,int,seqlist,pos,NULL,data
来源: https://blog.csdn.net/zhzsdiligence/article/details/121033101

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有