顺序表

内存分配
 1 //c++编译环境
 2 
 3 #include<stdio.h>
 4 #define Maxsize 10                 //静态存储数据最大值
 5     
 6 //定义顺序表
 7 typedef struct{
 8     int data[Maxsize];            //存放Maxsize个int型数据类型
 9     int length;                    // 当前顺序表位置长度
10 }Seqlist;
11 
12 //初始化链表
13 void Initlist(Seqlist &L){
14     for (int i=0;i<Maxsize;i++)  //必须数据初始化,避免存在内存垃圾问题
15         L.data[i]=0; 
16     L.length=0;                  // 当前顺序表数据长度
17 }
18 
19 int main(){
20     Seqlist L;             
21     Initlist(L);
22     return 0;
23 
24 }
静态分配
 1 #include <stdio.h>
 2 #define Initsize 20
 3 
 4 //声明顺序表数据类型
 5 typedef struct{
 6     int *data;        //存储int型内存区域指针
 7     int length;     //当前顺序表长度
 8     int maxsize;
 9 }Seqlist;
10     
11     
12 //初始化顺序表
13 void Initlist(Seqlist &L){
14     L.data = (int *)malloc(Initsize*sizeof(int));    //内存块分配,获取内存区域指针
15     L.length = 0;                                    //初始化当前顺序表长度
16     L.maxsize = Initsize; 
17     
18 }
19 
20 //顺序表内存区域增加len
21 void Increasesize(Seqlist &L, int len){            
22     int *p = L.data;                                //获取原内存块中数据指针
23     L.data = (int *)malloc((Initsize + len)*sizeof(int));//分配新内存区域
24     for (int i=0;i<L.length;i++)            //复制原有内存数据至新内存区域
25         {
26             L.data[i] = p[i];
27         }
28     free(p);                                //释放原有数据
29 }
30 
31 
32 int main(){
33     Seqlist L;
34     Initlist(L);
35     Increasesize(L,5);
36     return 0;
37 }
动态分配

 

posted @ 2020-10-09 21:35  搬瓦匠  阅读(61)  评论(0编辑  收藏  举报