数据结构——线性表顺序表示详解

目录

1.线性表的类型定义

2.基本操作

3.线性表的存储结构

4.补充

1.元素类型说明

2.数组定义​编辑

3.c语言的内存动态分配

4.c++的动态存储分配

5.c++中的参数传递

引用类型作参数

6.顺序表基本操作的实现

1.线性表的初始化

代码示例:

2.销毁线性表,清空线性表

​ 代码示例:

3.求线性表长度,判断线性表是否为空

代码示例:

4.顺序表的取值

代码示例:

5.顺序表的查找

代码示例:

6.顺序表的插入

代码示例:

​7.顺序表的删除

代码示例:

7.顺序表的操作算法分析

8.总的代码及示例


1.线性表的类型定义

相当于一个数组

2.基本操作

3.线性表的存储结构

4.补充

1.元素类型说明

2.数组定义

3.c语言的内存动态分配

计算出所需的大小再将它的指针赋值给data

4.c++的动态存储分配

5.c++中的参数传递

引用类型作参数

使用引用后传进函数的就是a和b本身,并没有重新复制一份

6.顺序表基本操作的实现

1.线性表的初始化

代码示例:

cpp 复制代码
typedef struct{
	int *elem;
	int length;
}sqlist;

bool init_sqlist(sqlist &l)
{
	l.elem = new int[100];
	if(!l.elem) exit(-2);
	l.length = 0;
	return 1;
}

2.销毁线性表,清空线性表

代码示例:

cpp 复制代码
void destory_list(sqlist &l)
{
	if(l.elem) delete l.elem;
}

void clear_list(sqlist &l)
{
	l.length = 0;
}

3.求线性表长度,判断线性表是否为空

代码示例:

cpp 复制代码
int getlength(sqlist &l)
{
	return l.length;
}

bool isempty(sqlist &l)
{
	if(l.length == 0) return 1;
	else return 0;
}

4.顺序表的取值

代码示例:

cpp 复制代码
int getelem(sqlist &l,int i,int &e)
{
	if(i < 1 || i > l.length) return -1;
	e = l.elem[i-1];
	return 1;
}

5.顺序表的查找

代码示例:

cpp 复制代码
int locateelem(sqlist & l,int e)
{
	for(int i = 0; i < l.length; i++)
	{
		if(l.elem[i] == e) return i + 1;
	}
	return 0;
}

6.顺序表的插入

代码示例:

cpp 复制代码
int insert(sqlist &l,int i,int e)
{
	if(i < 1 || i > l.length + 1) return 0;
	if(l.length == 100) return 0;
	for(int j = l.length - 1;j >= i - 1;j--)
	{
		l.elem[j + 1] = l.elem[j];
	}
	l.elem[i - 1] = e;
	l.length ++;
	return 1;
}

7.顺序表的删除

代码示例:

cpp 复制代码
int deletelist(sqlist &l,int i)
{
	if(i < 1 || i > l.length) return 0;
	for(int j = i; j <= l.length - 1; j++)
	{
		l.elem[j - 1] = l.elem[j];
	}
	l.length--;
	return 1;
}

7.顺序表的操作算法分析

8.总的代码及示例

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

typedef struct{
	int *elem;
	int length;
}sqlist;

void init_sqlist(sqlist &l)
{
	l.elem = new int[100];
	l.length = 0;
}

void destory_list(sqlist &l)
{
	if(l.elem) delete l.elem;
}

void clear_list(sqlist &l)
{
	l.length = 0;
}

int getlength(sqlist &l)
{
	return l.length;
}

bool isempty(sqlist &l)
{
	if(l.length == 0) return 1;
	else return 0;
}

int getelem(sqlist &l,int i,int &e)
{
	if(i < 1 || i > l.length) return -1;
	e = l.elem[i-1];
	return 1;
}

int locateelem(sqlist & l,int e)
{
	for(int i = 0; i < l.length; i++)
	{
		if(l.elem[i] == e) return i + 1;
	}
	return 0;
}

int insert(sqlist &l,int i,int e)
{
	if(i < 1 || i > l.length + 1) return 0;
	if(l.length == 100) return 0;
	for(int j = l.length - 1;j >= i - 1;j--)
	{
		l.elem[j + 1] = l.elem[j];
	}
	l.elem[i - 1] = e;
	l.length ++;
	return 1;
}

bool deletelist(sqlist &l,int i)
{
	if(i < 1 || i > l.length) return 0;
	for(int j = i; j <= l.length - 1; j++)
	{
		l.elem[j - 1] = l.elem[j];
	}
	l.length--;
	return 1;
}

int main()
{
	sqlist l;
	init_sqlist(l);
	cout << getlength(l) << endl;
	insert(l,1,1);
	insert(l,2,10);
	insert(l,3,100);
	insert(l,4,1000);
	insert(l,5,10000);
	cout << locateelem(l,100) << endl;
	cout << locateelem(l,10000) << endl;
	
	cout << getlength(l) << endl;
	deletelist(l,3);
	cout << getlength(l) << endl;
	
	return 0;
}

相关推荐
古译汉书5 小时前
嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门
数据结构·笔记·stm32·单片机·嵌入式硬件·个人开发
橘颂TA7 小时前
【数据结构】解锁数据结构:通往高效编程的密钥
数据结构
LeaderSheepH10 小时前
常见的排序算法
数据结构·算法·排序算法
JasmineX-113 小时前
数据结构——静态链表(c语言笔记)
c语言·数据结构·链表
小卡皮巴拉13 小时前
【笔试强训】Day1
开发语言·数据结构·c++·算法
༾冬瓜大侠༿15 小时前
数据结构:排序
数据结构·算法·排序算法
.YM.Z18 小时前
数据结构——链表
数据结构·链表
hn小菜鸡20 小时前
LeetCode 2570.合并两个二维数组-求和法
数据结构·算法·leetcode
滋滋不吱吱20 小时前
栈的进阶篇
数据结构·算法·leetcode
YQ_ZJH20 小时前
Java List列表创建方法大总结
java·开发语言·数据结构·算法·list