IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 新知-----数据结构---顺序表 -> 正文阅读

[C++知识库]新知-----数据结构---顺序表

目录

1.何为顺序表?

顺序表的特性:

顺序表的定义

本质 区别:所占的内存位置不同,

静态顺序表

动态顺序表

?向顺序表中插入元素


1.何为顺序表?

在计算机内部存储一张线性表,(线性结构的数表),最方便简单的方法就是用一组连续地址的内存单元来存储整张线性表----存储结构叫做顺序存储结构----这种结构下的线性表就叫做顺序表

顺序表的特性:

  • 有唯一的表名来标识该顺序表
  • 连续地址内存
  • 数据顺序存放,元素之间有先后

数组也具有其特性,所以数组也是顺序表

顺序表的定义

  1. ?静态顺序表
  2. 动态顺序表

本质 区别:所占的内存位置不同,

对于静态顺序表,内存开辟在静态区,也就是函数栈,这个区域的内存空间会随着函数调用的完成而被系统收回。

对于动态顺序表,其内存开辟在动态区,也就是堆区,不会被系统收回,需要程序主动释放? ? ? ??

静态顺序表

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
typedef int ElemType;//这样定义更方便修改类型
#define MaxSize   10 
int main()
{
	struct stu {
		ElemType a[MaxSize];
		int size;//元素个数,(顺序表长度);
	};

	return 0;
}

动态顺序表

typedef int ElemType;


	typedef struct stu {
		ElemType* a;
		int size;//顺序表长度
		int capacity;//容量
	}s,SeqList;

void InitSeqList(SeqList* s)//顺序表初始化
{
	s->a =(ElemType*) malloc(sizeof(ElemType) * 4);
	s->capacity = 4;
	s->size = 0;

}
  1. 定义一个类型SeqList、它是一个结构体,其成员包括:指向顺序表的首地址a、顺序表中表的长度(表中元素个数)长度size、顺序表的存储空间容量(占据内存大小,以大小(ElemType)为单位
  2. 通过调用一个函数InitSeqList()实现动态生成一张顺序表。函数initSqlist()的参数是一个SeqList类型的指针变量,因此可以在函数InitSeqList()中直接对顺序表进行操作。

?向顺序表中插入元素

后面插入:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
#define MaxSize   10 
//int main()
//{
//	struct stu {
//		ElemType a[MaxSize];
//		int size;//元素个数,(顺序表长度);
//	};
//
//	return 0;
//}
typedef struct SeqList {
	ElemType* a;
	int size;//顺序表长度
	int capacity;//容量
}SeqList, SL;
void InitSeqList(SL* s)//初始化
{
	s->a =(ElemType*) malloc(sizeof(ElemType) * 4);
	s->capacity = 4;
	s->size = 0;

}
void SeqListprint(SeqList* s)//打印
{
	for (int i = 0; i < s->size; i++)
	{
		printf("%d ", s->a[i]);
	}
	printf("\n");

}
void SeqListCheckCapacity(SeqList* s)//检查容量是否不够
{
	if (s->size >= s->capacity)
	{
		s->capacity *= 2;
		s->a = (ElemType*)realloc(s->a, sizeof(ElemType) * s->capacity);
	}

}
void SeqListInsert(SeqList* s,ElemType x)//后面插入
{
	SeqListCheckCapacity(s);
	s->a[s->size] = x;
	s->size++;

}
test1()
{
	SL m;
	InitSeqList(&m);
	SeqListInsert(&m, 2);
	SeqListInsert(&m, 2);
	SeqListInsert(&m, 2);

	SeqListprint(&m);

}
int main()
{
	
	test1();
	

	return 0;
}

从中间插入:

void SeqListInsert(SeqList* s, int pos, ElemType x)
{
	SeqListCheckCapacity(s);
	int end = s->size - 1;
	while (end >= pos)
	{
		s->a[end + 1] = s->a[end];
		end--;
	}
	s->a[pos] = x;
	s->size++;


}

顺序表中删除元素:

void SeqListErase(SeqList* s, int pos)
{
	int start = pos;
	while (start<s->size - 1)
	{
		s->a[start] = s->a[start + 1];
		start++;
	}
	s->size--;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:04:24  更:2022-03-16 22:04:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:15:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码