本文主要是介绍1-定长的顺序表不定长顺序表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
存储结构
顺序存储结构:逻辑上连续,物理存储上也连续
链式存储结构:逻辑上连续,物理存储上不连续
顺序表–操作数据
顺序表是在计算机内存中以数组的形式保存的线性表。
顺序存储:
类似于数组,顺序表比数组多带一个元素来记录存储的元素个数count
定长顺序表
定长顺序表 —》类似于数组
不定长顺序表—》C++的STL vector
数组适用于值比较固定的情况 存储数据
数组没有成套的方法
计数法:(即顺序表的定义)
struct data
{int num[10];int count;
}
程序案例----
Seqlist.h#pragma once
//定义顺序表 以数组形式存储 所以无法扩容 写判满函数
#ifndef _SEQLIST_H
#define _SEQLIST_H
#define LENGTH 10
typedef int ElemType;
typedef struct _Seqlist
{ElemType data[LENGTH];//存储数据元素的空间 固定大小的int count;//记录存储的数据元素个数
}Seqlist,*pSeqlist;//*pSeqlist是指针
static bool IsFull(pSeqlist seq);//判满
static bool IsEmpty(pSeqlist seq);//判空
bool InitList_Sq(pSeqlist seq);//初始化
void InsertList_SqOfHead(pSeqlist seq, ElemType val);//插入元素 头插 以及插入的元素
void InsertList_SqOfTail(pSeqlist seq, ElemType val);//插入元素 尾插 以及插入的元素
void InsertList_SqOfPos(pSeqlist seq, ElemType val,int pos);//插入元素 指定位置插入
void ShowList_Sq(pSeqlist seq);
void DeleteList_SqOfHead(pSeqlist seq);//头删
void DeleteList_SqOfTail(pSeqlist seq);//尾删
void DeleteList_SqOfPos(pSeqlist seq,int pos);//指定位置删除
bool FindList_SqOfPos(pSeqlist seq, int pos, ElemType &val);//根据位置返回元素的值
int FindList_SqOfVal(pSeqlist seq, ElemType val);//根据元素的值返回位置
int FindList_SqOfLocate(pSeqlist seq, ElemType val,bool(*compare)(ElemType,ElemType));//根据函数条件compare和val值查找元素---函数指针
void ReverseList_Sq(pSeqlist seq, void(*Swap)(ElemType&, ElemType&));//逆置顺序表元素
//还是传入了函数指针 因为万一交换的是结构体里的某一个怎么办
bool compare(ElemType a, ElemType b);
void Swap(ElemType &a, ElemType &b);
#endif
/*
typedef int ElemType;
#define LENGTH 10
typedef struct _Alterlist
{ElemType *data;//存储数据元素的空间首地址得指针int count;//记录已存储的数据元素个数int listsize;//记录存储空间元素总大小
}Alterlist, *pAlterlist;//*pAlterlist是指针
bool InitList_Sq(pAlterlist alist)
{assert(alist != NULL);//断言指针是否为空 只在debug版本下有效if (alist == NULL){return false;//保证release版本也能判断}alist->data = (ElemType *)malloc(sizeof(ElemType)*LENGTH);
}
*/
Seqlist.cpp
// Seqlist.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include"assert.h"
#include"Seqlist.h"
#include<string.h>
#include <iostream>
using namespace std;
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门提示:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
//判断是否满 写成静态函数是因为静态函数将函数符号生成为LOCAL 只能在本文件中访问 外部不能访问
static bool IsFull(pSeqlist seq)
{if (seq->count == LENGTH){return true;}return false;
}
static
这篇关于1-定长的顺序表不定长顺序表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!