静态&动态分配线性表

简介: 数据结构静态&动态分配线性表

@[toc]

线性表定义

线性表的顺序存储又称顺序表,它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而是的逻辑上相邻的两个元素在物理位置上也相邻。顺序表的特点:表中元素的逻辑顺序和物理顺序相同对以为线性表可以进行动态分配内存和静态分配内存

静态分配线性表

  • 在静态分配时,由于数组的大小和空间事先已经固定,一旦空间占满,将会发生溢出

//

// Created by getup on 2021/2/16.

//

#include <iostream>

usingnamespacestd;

#include <stdio.h>

#define InitSize 10  //顺序表的初始长度

typedefstruct{

   int*data;    //指示动态分配数组的指针

   intMaxSize ;       //顺序表的最大容量

   //  int data[MaxSize];//用静态的数组存放数据元素

   intlength;       //顺序表的当前长度

}Seqlist;              //顺序表的类型定义

//基本操作---初始化一个顺序表

voidInitList(Seqlist&L){

  //用malloc函申请一篇连续的存储空间

  L.data=(int*)malloc(InitSize*sizeof(int));

  L.length=0;

  L.MaxSize=InitSize;

}

//增加动态数组的长度

voidIncreaseSize(Seqlist&L,intlen){

   int*p=L.data;

   L.data=(int*)malloc((L.MaxSize+len)*sizeof(int));

   for(inti=0;i<L.length;i++)

   {

       L.data[i]=p[i];

   }

   L.MaxSize=L.MaxSize+len;

   free(p);

}

intmain() {

   SeqlistL;         //声明一个顺序表

   InitList(L);      //初始化顺序表

   IncreaseSize(L,5);//插入5个元素

   for(inti=2;i<=5;i++)

       printf("data[%d]=%d\n",i,L.data[i]);

   return0;

}

动态分配线性表

  • 在动态分配时,存储数组的空间是在程序执行过程中通过动态存储语句分配的,不会发生溢出

//

// Created by getup on 2021/2/16.

//

#include <iostream>

usingnamespacestd;

#include <stdio.h>

#define InitSize 10  //顺序表的初始长度

typedefstruct{

   int*data;    //指示动态分配数组的指针

   intMaxSize ;       //顺序表的最大容量

   //  int data[MaxSize];//用静态的数组存放数据元素

   intlength;       //顺序表的当前长度

}Seqlist;              //顺序表的类型定义

//基本操作---初始化一个顺序表

voidInitList(Seqlist&L){

   //用malloc函申请一篇连续的存储空间

   L.data=(int*)malloc(InitSize*sizeof(int));

   L.length=0;

   L.MaxSize=InitSize;

}

//增加动态数组的长度

voidIncreaseSize(Seqlist&L,intlen){

   int*p=L.data;

   L.data=(int*)malloc((L.MaxSize+len)*sizeof(int));

   for(inti=0;i<L.length;i++)

   {

       L.data[i]=p[i];

   }

   L.MaxSize=L.MaxSize+len;

   free(p);

}

intmain() {

   SeqlistL;         //声明一个顺序表

   InitList(L);      //初始化顺序表

   IncreaseSize(L,5);//插入5个元素

   for(inti=2;i<=5;i++)

       printf("data[%d]=%d\n",i,L.data[i]);

   return0;

}

相关文章
|
1月前
动态顺序栈
动态顺序栈
29 0
|
6天前
指针\动态二维数组空间
指针\动态二维数组空间
12 4
|
19天前
|
算法
数据结构和算法学习记录——特殊线性表之栈(上)-栈的概念、栈的结构、链式栈数组栈、栈的结构体定义、栈的基本接口函数、栈顶初始化函数
数据结构和算法学习记录——特殊线性表之栈(上)-栈的概念、栈的结构、链式栈数组栈、栈的结构体定义、栈的基本接口函数、栈顶初始化函数
9 0
|
1月前
|
C++
数据结构(顺序表 动态定义
数据结构(顺序表 动态定义
17 2
|
11月前
|
存储 算法 C语言
【数据结构和算法】实现线性表中的静态、动态顺序表(上)
【数据结构和算法】实现线性表中的静态、动态顺序表
|
11月前
|
存储 算法
【数据结构和算法】实现线性表中的静态、动态顺序表(下)
【数据结构和算法】实现线性表中的静态、动态顺序表(下)
|
11月前
|
算法 C语言
【数据结构和算法】了解认识栈,并实现栈的相关函数(上)
【数据结构和算法】了解认识栈,并实现栈的相关函数(上)
|
11月前
|
算法
【数据结构和算法】了解认识栈,并实现栈的相关函数(下)
【数据结构和算法】了解认识栈,并实现栈的相关函数(下)
|
机器学习/深度学习 人工智能 C#
C#<数据结构>栈的应用——括号分配问题
C#<数据结构>栈的应用——括号分配问题
63 0