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

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

  • 相关阅读:
    sql server 自动核算
    sql server 连接 EXCEL 直接查询
    Eclipse中html/js/jsp代码的自动联想
    JSP声明和JSP指令
    JSP工作流程
    tomcat安装、配置相关的几个点
    第一篇博客
    Dynamics CRM 2016 的新特性
    Orchard CRM 更新
    在Azure上搭建Orchard CRM入口网站
  • 原文地址:https://www.cnblogs.com/szj666/p/13067610.html
Copyright © 2011-2022 走看看