zoukankan      html  css  js  c++  java
  • 使用c语言数组创建线性表-链表

    链表操作

    在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字节。

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

  • 相关阅读:
    5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
    4.HadoopMapRe程序设计
    3.MapReduce原理和Yarn
    java注解
    各种操作系统远程windows服务器
    protocol-buffers
    反向生成实体类
    java 反射
    web api 返回数据
    Newtonsoft.Json
  • 原文地址:https://www.cnblogs.com/szj666/p/13067610.html
Copyright © 2011-2022 走看看