2-1-1.线性表的存储结构

数据结构笔记(严蔚敏版)第二章线性表

 2-1.线性表

 2-1-1.线性表的存储结构

首先要定义线性表的动态分配顺序存储结构,我们这里此结构存放在SqListType.h中

 

#pragma once
#ifndef _SQLISTTYPE_H_
#define _SQLISTTYPE_H_

#define LIST_INIT_SIZE 10
#define LIST_INCREMENT 2
typedef int ElemType;
struct SqList{
	ElemType *elem;
	int length;
	int listsize;
};
#endif

#define LIST_INIT_SIEZE 10 可以想象成,一个10个单位的数组== int L[10]括号中10的概念

#define LIST_INCREMENT 2 可以想象成当数组不够用的时候,再向数组里面添加2个单位的长度的数组片段,也就是给数组再接上一节,确保数组够用

ElemType *elem; 1.是存储空间基地址也就是数组的中 int *p=&a[0]的含义,

                             2.在线性表中: *elem就是第一个元素的地址=表的地址 叫做线性表的头指针

int length 1.等到在数组存入元素个数后的长度,例如,相当于在 int list[10]中存入5个元素,那么length就是5

int listsize;1.当前分配的存储容量(以sizeof(ElemType)为单位),

                 2.总长度为LIST_INIT_SIZE*sizeof(ElemType)也就是10*sizeof(ElemType);

 

2-1-2.线性表的基本操作

下面是基本操作的声明存放在SqListBasicOperation.h

#pragma	once

#ifndef _SQLISTBASICOPERATION_H__
#define _SQLISTBASICOPERATION_H__

#include "c1.h"
#include "SqListType.h"
void InitList(SqList &L);
void DestroyList(SqList &L);
void ClearList(SqList &L);
Status ListEmpty(SqList L);
int ListLength(SqList L);
Status GetElem(SqList L,int pos,ElemType &e);
int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType));
Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e);
Status NextElem(SqList L,ElemType cur_e,ElemType &next_e);
Status ListInsert(SqList &L,int pos,ElemType e);
Status ListDelete(SqList &L,int pos,ElemType &e);
void ListTraverse(SqList L,void(*vi)(ElemType&));
#endif

void InitList(SqList &L); 初始化线性表,需要改变SqList表因此有&

void DestroyList(SqList &L);彻底删除线性表,需要改变SqList表因此有&

void ClearList(SqList &L);清空线性表,需要改变SqList表因此有&

Status ListEmpty(SqList L);判断线性表,Status类型说明此函数返回此操作时候成功或失败的状态;不需要改变SqList表因此没有&

int ListLength(SqList L);返回线性表中元素个数的长度,不需要改变SqList表因此没有&

Status GetElem(SqList L,int pos, ElmeType &e);Status类型说明此函数返回此操作时候成功或失败的状态;&e是pos位置上返回的元素,加入pos是5,也就是返回表中第5个元素e,因此需要&来操作线表中的元素

int LocateElem(SqList L,ElemType cur_e, Status(*compare)(ElemType,ElemType));此函数返回要找元素即cur_e元素的位置,Status(*compare)(ElemType,ElemType)是将cur_e与线性表中元素相比较的指针

Status PriorElem(SqList L, ElemType cur_e, ElemType &pre_e);输入cur_e元素,返回cur_e元素的之前一个元素pre_e

Status NextElem(SqList L, ElemType cur_e, ElemType &next_e);输入cur_e元素,返回cur_e元素的之后一个元素next_e

Status ListInsert(SqList &L,int pos,ElemType e);需要改变线性表因此需要&L,pos是指删除现象表中的第几个元素的位置,pos为5,即为第5个员孙,e是指要插入元素是几,int pos=5, ElemType e=12就是表示在线表第5个位置上插入12.

Status ListDelete(SqList &L,int pos, ElemType &e);此函数是在线性表中返回pos位置上的e元素,因此需要&e

void ListTraverse(SqList L, void(*vi)(ElemType&));遍历线性表;*vi指针是以某种格式遍历此表,在后面笔记中会提到*vi指针有几

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值