数据结构——线性表学习总结1(顺序表)

本文是作者为考研准备的数据结构学习笔记,重点介绍了线性表的定义、特点,以及作为抽象数据类型所定义的操作,如初始化、判断空表、插入和删除等。同时,详细讲解了顺序存储结构的实现,包括代码实现和算法思路,并讨论了顺序表的优缺点。
摘要由CSDN通过智能技术生成

前言:我是为了考研来学习的数据结构,作为计算机专业基础课,它是当值无愧的一块难啃的硬骨头,对于我这个跨专业的考生学起来非常的难受;前面发的C学习的博客是为了学习这里的铺垫,毕竟不熟悉结构体、指针、还有malloc()等函数简直就不是到那些代码写的啥。下面的总结笔记主要来自于小甲鱼老师的视频教程,我边看边暂停记笔记写代码,在博客里做一个归拢,当作一个回顾和复习(其实和预习差不多)。

一、线性表定义及特点
1、定义

  • 一个线性表是由零个或多个元素组成的有限序列;

2、特点

  • 是一个非空的有限集
  • 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其余元素有且仅有一个前驱和后继;

3、记法

  • Date 记作(a1,a2,a3,…ai,a(i+1),…an);
  • n为线性表长度;
  • n = 0为空表;

二、线性表作为抽象数据类型所定义的一些操作

1、什么是抽象数据类型

  • 抽象数据类型(Abstract Date Type,ADT):是指一个数学模型以及定义在此数学模型上的一组操作;
  • 描述方法:可用(D,S,P)三元组表示:
    |D| 数据对象 |
    |S|D上的关系集|
    |P | 对D的基本操作集 |

2、线性表常用的基本操作总览

  • InitList(*L):初始化操作,构建一个空的线性表;
  • ListEmpty(L):判断线性表是否为空,若为空则返回TRUE,否则返回FALSE;
  • ClearList(*L):清空线性表;
  • GetElem(L,i,*e):将线性表L中的第i个位置元素返回给e;
  • LocateElem(L,e):在线性表中查找与e相等的元素,成功返回i,无返回0;
  • ListInsert(*L,i,e):在线性表L中第i个位置插入新元素e;
  • ListDelete(*L,i,*e):删除线性表L中第i个元素,并用e返回其值;
  • ListLength(L):返回线性表L的元素个数;

三、基本操作的结构代码及其算法思路

1、线性表顺序存储结构(顺序表)的结构代码

#define MAXSIZE 20
typedef int ElemType;
typedef struct{
   
	ELemType date[MAXSIZE];
	int length;   //线性表当前长度
}SqList;
//实际上是对数组封装,增加了当前长度变量length

顺序存储结构封装需三个属性:

  • 存储空间的起始位置,即数组date的存贮位置date[0];
  • 最大存储容量,即数组长度MAXSIZE;
  • 当前长度:length;

地址计算方法:
第i个元素ai的存储地址:LOC(ai) = LOC(a1) +(i-1)*c; //c = sizeof(SqList);

*2、InitList(L),构建一个新的线性表

Status InitList_Sq(SqList &L){
   
	//构建一个空的线性表L;
	L.elem =(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
	if( L == NULL)
		printf("申请内存失败\n");
	L.length = 0;    //空表长度为零
	L.listsize = MAXSIZE;//初始存储容量
	return OK;
}

3、ListEmpty(L),判断线性表是否为空

Status ListEmpty_Sq(SqList L){
   
	//判断线性表是否为空
	if(L.length == 0)
	return TRUE;
	else return FALSE;
}

*4、ClearList(L),清空线性表

Status ClearList_Sq(Sqlist &L){
   
	//清空线性表,需要找到表头位置,用到指针
	int i;
	for(i=0;i<L.length;i++)
		{
   
			L.elem[i]=0;
		}
		L.Length = 0;
	return OK;
}
	
	

*5、GetElem(L,i,e),查找线性表L第i个位置的元素并返回给e;

Status GetElem_Sq(SqList L, int i, ElemType *e) 
 {
   
 	if(L.length==0 || i<1 ||i>L.length )
 	{
   
 		return ERROR;
	 }
	 *e = L.elem[i-1];
	 return OK;
 }

6、LocateElem(L,e),在线性表中查找与给定e相等的元素

Status LocateELem_Sq(SqList L,ElemType e)
{
   
	int i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值