zoukankan      html  css  js  c++  java
  • 1.2 顺序表

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MaxSize 10
    
    // 注意:顺序表不存在头节点下标0要插入。有MaxSize定义最大长度,有Length定义当前长度,有data存放数据。
    
    // 静态分配
    typedef struct{
        int data[MaxSize];   // 该顺序表是固定元素的组数。也可以构造一个其它结构体类型数组,对应于书上-ElemType
        int Length;          // 插入一个元素记一个
    }SqList;
    
    void InitList(SqList *L){
       L->Length=0; 
    }
    
    // 插入一个元素需要移动节点平均数为n/2
    int ListInsert(SqList *L,int loc,int e){
        int j;
        if(loc<1||loc>L->Length+1) return 0;     // 判空判满-预留1个空位以备往后移动
        if(L->Length>=MaxSize) return 0;         
        for(j=L->Length;j>=loc;j--)              // 定位到当前长度的最后一个,依次往后移动
            L->data[j]=L->data[j-1];
        L->data[loc-1]=e;                        // 插入元素
        L->Length++;                             // 记得更新长度
        return 1;   
    }
    
    int ListDelete(SqList *L,int loc,int *e){
        int i;
        if(loc<1||loc>L->Length)                
            return 0;
        *e=L->data[loc];
        for(i=loc;i<L->Length;i++){              // 注意是小于
            L->data[i]=L->data[i+1];
        }
        L->Length--;
        return 1;
    }
    
    void displayList(SqList *L){
        int i;
        for(i=0;i<10;i++)
            printf("%d
    ",L->data[i]);
    }
    
    int main(){
        int i,j;
        SqList L;
        InitList(&L);
        for(i=0;i<10;i++){            
            ListInsert(&L,i,i);
        }
        displayList(&L);
    
        int e=0;
        ListDelete(&L,4,&e);          // 4号位置存放数字5
        printf("已成功删除元素%d
    ",e);
    }
  • 相关阅读:
    李超线段树 [Heoi2013]Segment
    [置顶] 九月半集训总结
    [置顶] 我想学学
    图论+前缀和 任(duty)
    模拟 飞(fly)
    入坑 可持久化线段树——主席树
    一次爆炸的联考
    HASH+平衡树 [JSOI2008]火星人prefix
    乱搞+STL平衡树 序列
    数学+图论 建造游乐场
  • 原文地址:https://www.cnblogs.com/Alexagender/p/10806199.html
Copyright © 2011-2022 走看看