码迷,mamicode.com
首页 > 编程语言 > 详细

使用c语言数组创建线性表-链表

时间:2020-06-08 19:18:56      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:++i   开头   list   printf   int   为什么   type   lang   动态分配内存   

链表操作

在c语言里我们通过结构体和数组这两种数据结构构造线性表

  • 创建顺表表-数组静态分配内存
typedef struct {
    char data[10];
    int length;
}SqList;

bool ListInsert(SqList &L,int i,char e){
    for (int j = L.length; j>=i; --j)
        L.data[j]=L.data[j-1];
    L.data[i-1]=e;
    L.length++;
    return true;
}

int main(){
    SqList ls = {{‘a‘,‘d‘},12};
    ListInsert(ls,1,‘h‘);
    printf(ls.data);
    return 1;
}
  • 动态数组

动态数组可以随程序需要而重新指定大小数组,也就是给他动态分配内存空间,动态数组的内存空间是从堆动态分配的,所以需要用指针来指向它在堆内的地址,而且使用完毕需要我们手动去销毁它。下面我们用一段代码来展示一下

int *test;
test = (int *)malloc(sizeof(int)*5);
for (int i = 0; i < 5; ++i) {
    test[i]=i;
}
printf("%d", sizeof(test));

上面的执行结果是8,很多人会有疑问,我们不是给test分配了5*8(int占8字节)的空间了吗?为什么打印它的内存空间还是8,这里要说明一下,我们这里的test只是一个指针,也就是指向给我们分配内存空间的开头地址,从开头到下方的5×8的空间是专门给你用的,但你就仅仅是个int类型的指针,所以就只占8字节。

上面定义了指针,然后用它来动态分配内存空间,

使用c语言数组创建线性表-链表

标签:++i   开头   list   printf   int   为什么   type   lang   动态分配内存   

原文地址:https://www.cnblogs.com/szj666/p/13067610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!