Quick actions

cmd+k|ctrl+k

Navigation

Languages

顺序表初始化 动态分配 C语言

Snippet info

Language

C

Visibility

public

Author

qwas

Created

2024-05-12T17:48:10.629628Z

Updated

2024-05-13T10:05:01.727098Z

# include<stdio.h>
# include<stdlib.h>

#define InitSize 10 // 默认最大长度
// #define MaxSize 10  // 定义最大长度


typedef struct {
  int *data; // 指示动态分配数组的指针
  int MaxSize;  // 用静态的 “数组” 存放数据元素
  int length; 
}SqList;

void InitList (SqList *L)
{
    // for (int i = 0; i < MaxSize; i++)
    L->data = (int *) malloc (InitSize *sizeof(int));
    L->MaxSize = InitSize;
    L->length = 0;  // 顺序表初始长度为 0

}

void IncreaseSize(SqList *L, int len)
{
    int *p = L->data;
    L->data = (int *) malloc((L->MaxSize+len)*sizeof(int));
    for(int i=0;i<L->length;i++)
    {
        L->data[i] = p[i];  // 将数据复制到新区域
    }
    L->MaxSize = L->MaxSize + len;  // 顺序表最大长度增加 len
    free (p);  // 释放原来的内存空间
}


int main()
{
  SqList L;  // 声明一个顺序表
  InitList(&L);  // 初始化顺序表

  IncreaseSize(&L,5);

  for(int i =0;i<L.MaxSize;i++)
  {
    printf("data[%d]=%d\n",i,L.data[i]);
  }
  return 0;
}
INFO