数据结构-顺序表插入元素时扩容问题

本程序是双倍扩容

顺序表类定义:

 1 template<class T>
 2 class SeqList :public Linearlist<T>
 3 {
 4 public:
 5     SeqList(int mSize);
 6     ~SeqList()
 7     {
 8         delete[] elements;
 9     }
10     bool Insert(int i, T x);
11 private:
12     int maxLength;
13     T *elements;
14 };
15
16 template <class T>
17 SeqList<T>::SeqList(int mSize)
18 {
19     maxLength = mSize;
20     elements = new T[maxLength];
21     n = 0;
22 }

插入时若空间不足自动扩容成员函数:

 1 template <class T>
 2 bool SeqList<T>::Insert(int i, T x)
 3 {
 4     if (i<-1 || i>n - 1)
 5     {
 6         cout << "out of bound" << endl;
 7         return false;
 8     }
 9     if (n == maxLength)
10     {
11         T *elements_temp;
12         elements_temp = new T[2 * maxLength];
13         for (int k = 0; k<n; k++)
14         {
15             elements_temp[k] = elements[k];
16         }
17         delete[]elements;
18         elements = elements_temp;
19     }
20     for (int j = n - 1; j > i; j--)
21     {
22         elements[j+1 ] = elements[j];
23     }
24     elements[i+1] = x;
25     n++;
26     return true;
27 }
时间: 2024-11-07 05:16:39

数据结构-顺序表插入元素时扩容问题的相关文章

数据结构顺序表的操作全集(创建,遍历,插入,删除,排序等等)

#include"stdio.h" #include"stdlib.h" #include"malloc.h" #define list_size 100 typedef struct Node { int data[list_size]; int len; }NODE,* PNODE; void creat_list(PNODE L) { int i; int val; int len; /* PNODE L=(PNODE)malloc(siz

数据结构顺序表思想以及完整代码实现

本文转载自趣学算法,方便个人学习参考使用 http://blog.csdn.net/rainchxy/article/details/77946835 数据结构 第3讲 顺序表 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入.删除时需要移动大量元素. 顺序表可以分配一段连续的存储空间Maxsize,用elem记录基地址,用length记录实际的元素个数,即顺序表的长度, 结构体的定义: 结构体定义后,如果要定义个顺序

hrbust-1545-基础数据结构——顺序表(2)

http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) Time Limit: 1000 MS Memory Limit: 10240 K Total Submit: 412(165 users) Total Accepted: 188(150 users) Rating:  Special Judge: No Description 在长度为n(n<10

c数据结构 顺序表和链表 相关操作

编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include<stdlib.h> #define LINK_INIT_SIZE 100#define LISTINCREAMENT 10#define ElemType int#define OVERFLOW -2#define OK 1#define ERROR 0 typedef int status; /

数据结构线性表插入删除的示例

昨天留的作业,数据结构书和c语言书真的不一样,需要自己加加补补,今天写的时候迷迷瞪瞪的,反正在我电脑上能用. 数据结构线性表插入删除的示例: 代码: #include<iostream> #include<cstdio> using namespace std; #define list_init_size 100 #define listincrement 10 typedef struct { int *elem; int length; int listsize; }sqli

数据结构顺序表删除所有特定元素x

顺序表类定义: 1 template<class T> 2 class SeqList : 3 { 4 public: 5 SeqList(int mSize); 6 ~SeqList() 7 { 8 delete[] elements; 9 } 10 bool SM_Delete(T x); 11 private: 12 int maxLength; 13 T *elements; 14 }; 15 template <class T> 16 SeqList<T>::

8.基本数据结构-顺序表和链表

一.内存 - 计算机的作用:对数据进行存储和运算.首先我们需要知道我们目前使用的计算机都是二进制的计算机,就以为着计算机只可以存储和运算二进制的数据.例如下载好的一部电影,该电影可以存储到计算机中,计算机中存储的是基于二进制的电影数据,然后我们可以通过相关的视频播放软件结合相关的硬件对电影的二进制数据进行相关的运算操作,所产生的结果就是我们可以看到电影的画面和听到音频的声音. - 问题:阐述计算机如何计算1+2的结果? - 阐述:简单理解为,首先可以将1和2输入到计算机中,然后计算机会将1和2转

大话数据结构—顺序表、有序表、线性索引查找

查找 根据给定的某个值,在查找表中确定一个其关键字(唯一的标识一个记录)等于给定值的数据元素或数据记录. 静态查找:只查找,不修改元素[线性表.顺序查找.二分查找] 动态查找:查找时,插入或者删除元素[二叉排序树] 顺序表查找 顺序查找(针对静态查找表),也叫线性查找O(n),从头开始遍历,直到最后一个记录. 优化:添加哨兵 //有哨兵的顺序查找 int foo(int *a,int n,int key) { int i; a[0]=key;//哨兵 i=n; while(a[i]!=key)

2-01基本顺序表与元素外置顺序表recv

顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等,一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 对于这种需求,最简单的解决方案遍是将这样一组元素看成是一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种关系. 这样的一组序列元素的组织形式,我们可以将其抽象为线性表.一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系,线性表是最基本的数据结构之