数据结构(2)

文章目录

  • [1. 线性表的顺序表示](#1. 线性表的顺序表示)
  • [2. 线性表的链式表示](#2. 线性表的链式表示)

1. 线性表的顺序表示

 1. 线性表是具有相同数据类型的 n n n 个数据元素的有限序列,其中 n n n 为表长。

 2. 线性表的顺序存储又称顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理地址上也相邻。

 3. 顺序表的特点是表中元素的逻辑顺序与其存储的物理顺序相同。

 4. (1) 顺序表插入算法的平均时间复杂度为 O ( n ) O(n) O(n)。 (2) 顺序表删除算法的平均时间复杂度为 O ( n ) O(n) O(n)。 (3) 顺序表按值查找算法的平均时间复杂度为 O ( n ) O(n) O(n)。 (4) 顺序表按序号查找的时间复杂度为 O ( 1 ) O(1) O(1)。

cpp 复制代码
#include<iostream>
using namespace std;
#define InitSize 10  //表的初始长度定义 

typedef struct{
	int length;
	int Maxsize;
	int *data;
}SqList; 

void InitList(SqList &L)//初始化顺序表
{
	L.data = new int[InitSize];
	L.length = 0;
	L.Maxsize = InitSize;
}

void WriteList(SqList &L)//把元素放入顺序表
{
	cout<<"请输入你要创建的顺序表的长度:";
	cin>>L.length;
	cout<<"请输入你要放入顺序表里的元素:";
	for (int i = 0; i < L.length; i++)
		cin>>L.data[i];
}

bool PrintList(SqList &L)//打印顺序表
{
	if (!L.data)
		return false;
	cout<<"顺序表里的元素有:";
	for (int i = 0; i < L.length; i++)
		cout<<L.data[i];
	return true;
}
 
int main(){
    SqList L;
	InitList(L);
	WriteList(L);
	PrintList(L);
	return 0;
} 

2. 线性表的链式表示

 1. 线性表的链式存储又称单链表。它是指通过一组任意的存储单元来存储线性表中的数据元素。

 为建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息之外,还需要存放一个指向其后继的指针。

 2. 单链表结点结构如下图所示,其中 d a t a data data 为数据域,存放数据元素; n e x t next next 为指针域,存放其后继结点的地址。由于单链表的元素离散地分布在存储空间中,因此是非随机存取的存储结构。

 4. 头结点和头指针的关系:不管带不带头结点,头指针都始终指向链表的第一个结点;而头结点是带头结点的链表中的第一个结点,结点内通常不存储信息。

 3. 双链表结点中有两个指针 p r i o r prior prior 和 n e x t next next,分别指向其直接前躯和直接后继。

相关推荐
白狐_7989 小时前
408数据结构第5章:二叉树遍历序列题——技巧、判断与真题型总结
数据结构
Forever Nore12 小时前
学完C语言力扣第一题做不来正常吗
数据结构·算法
旖旎夜光15 小时前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
不一样的故事12616 小时前
芯片设计是一个高度复杂、分工精细的系统工程
数据结构·经验分享
梁辰兴17 小时前
软件工程:面向数据结构的设计方法
数据结构·软件工程·梁辰兴·面向数据结构的设计方法·jackson方法·warnier方法·方法比较
白狐_79818 小时前
408数据结构第7章:查找②——顺序、折半、分块查找秒杀 + 真题
数据结构·算法
hold?fish:palm19 小时前
链表的基本原理和实现(C++版本)
数据结构·c++·链表
码完就睡19 小时前
数据结构——树、二叉树基础概念
数据结构·算法
疯狂打码的少年21 小时前
【数据结构】栈:定义、顺序栈与链式栈
数据结构·笔记
wabs66621 小时前
关于图论【最短路径之Bellman_ford 算法|卡码网94.城市间货物运输的思考】
数据结构·算法·图论·卡码网·bellman_ford·求最短路径