小言_互联网的博客

C语言数据结构(6)--顺序线性表

289人阅读  评论(0)

顺序线性表概念

线性表简单的说就是有序的元素集合,像Java里面的List。

数组其实就是一个简单线性表,但是更多的只能代表线性表的一种存储结构,如果是一个完善的线性表的话,还应该包括删除元素、查询元素、修改元素等操作。

线性表的存储结构最常见的有两大类,一个是用一维数组,一个使用链表,本篇演示一维数组实现的线性,即顺序线性表;链表实现的线性表可以称之链式线性表。

有哪些操作

  1. 显示线性表元素个数
  2. 列出线性表的所有元素
  3. 获取指定位置元素
  4. 在指定位置插入元素
  5. 删除指定位置元素
  6. 清空线性表

大体上常用的也就这些操作了,下面我们来具体实现下。

顺序线性表代码实现

/*
 * 顺序线性表
 * 作者:熊猫大大
 * 时间:2019-09-22
*/
#include<stdio.h>
#define MAXSIZE 100 //最大元素个数

// 用于保存顺序线性表的结构体
typedef struct {
	int data[MAXSIZE];
	int count;//当前元素个数
}SequenceList;

// 获取元素个数
int getCount(SequenceList *list)
{
	return list->count;
}

// 显示所有元素
void printList(SequenceList *list) 
{
	int i;
	printf("\n所有元素:");
	for (i = 0; i < list->count; i++) 
	{
		printf("%d",list->data[i]);
	}
}

// 获取指定位置元素,返回值放入result指向元素
int getData(SequenceList *list,int index,int *result)
{
	if (index<0 || index>list->count-1) 
	{
		return 0;//0表示失败
	}
	*result = list->data[index];
	return 1;//1表示成功
}

// 插入元素
int insertData(SequenceList *list,int index, int input)
{
	int i;
	if (list->count >= MAXSIZE) //满了
	{
		return 0;
	}
	if (index<0 || index>list->count) //不在合理范围
	{
		return 0;
	}
	if (index != list->count) //插入数据不在表尾
	{
		for (i = list->count;i>=index;i--) 
		{
			list->data[i] = list->data[i - 1];
		}
	}
	list->data[index] = input;
	list->count++;
	return 1;
}
// 删除指定位置元素
int deleteData(SequenceList *list, int index) 
{
	int i;
	if (index<0 || index>list->count - 1) //不在合理范围
	{
		return 0;
	}
	for (i = index; i < list->count - 1; i++) 
	{
		list->data[i] = list->data[i +1];
	}
	list->count--;
	return 1;
}
// 清空所有元素
int clearData(SequenceList *list) 
{
	list->count = 0;
}


// 入口
int main()
{
	//初始化
	SequenceList sequenceList;
	SequenceList *list=&sequenceList;
	list->count = 0;
	//插入元素
	insertData(list, 0, 1);
	insertData(list, 1, 2);
	insertData(list, 2, 3);
	printList(list);
	//获取元素
	int result = -1;
	getData(list, 1, &result);
	printf("\ngetData:%d",result);
	//删除指定位置元素
	deleteData(list,1);
	printList(list);
	//清空元素
	clearData(list);
	printList(list);
	printf("\n");
	return 1;
}

转载:https://blog.csdn.net/woshisangsang/article/details/101175426
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场