zoukankan      html  css  js  c++  java
  • 003、动态顺序表的插入与删除

      1 #include "stdio.h"
      2 #include "stdlib.h"
      3 
      4 #define MAXSIZE 100
      5 typedef struct
      6 {
      7     int* sqelem;
      8     int length;
      9     int listsize;
     10 }sqlist;
     11 
     12 /* 初始化 */
     13 int sqListInit(sqlist* L)
     14 {
     15     int i;
     16     L->sqelem = (int*)malloc(MAXSIZE*sizeof(int));
     17     if(!L->sqelem)
     18     {
     19         printf("malloc err!
    ");
     20         return 0;
     21     }
     22     L->length = 0;
     23     L->listsize = MAXSIZE;
     24 
     25     for(i = 0;i < 10;i++)
     26     {
     27         *(L->sqelem+i) = i;
     28     }
     29     L->length = 10;
     30     return 1;
     31 }
     32 
     33 /* 循环打印 */
     34 int printSqList(sqlist* L)
     35 {
     36     int i;
     37     if(!L->sqelem)
     38     {
     39         printf("L->sqelem is null!
    ");
     40         return 0;
     41     }
     42     for(i = 0;i < L->length;i++)
     43     {
     44         printf("L->sqelem+%d = %d
    ",i,*(L->sqelem+i));
     45     }
     46     printf("L->length = %d
    ",L->length);
     47     printf("L->listsize = %d
    ",L->listsize);
     48     return 1;
     49 }
     50 
     51 /* 插入数据 */
     52 int insertSqList(sqlist* L,int n,int data)
     53 {
     54     int i;
     55     if(n < 0|| n > L->length)
     56     {
     57         printf("sqlist insertion error!
    ");
     58         return 0;
     59     }
     60     /* 超出最大空间 */
     61     if(L->length >= L->listsize)
     62     {
     63         /* 重新调整 L->sqelem 的大小*/
     64         L->sqelem = (int*)realloc(L->sqelem,L->listsize+10);
     65         if(!L->sqelem)
     66         {
     67             printf("realloc L->sqelem is null!
    ");
     68             return 0;
     69         }
     70         L->listsize += 10;
     71     }
     72     /* 插入数据 */
     73     for(i = L->length -1;i >= n;i--)
     74     {
     75         *(L->sqelem+i+1) = *(L->sqelem+i);
     76     }
     77     *(L->sqelem+n) = data;
     78     L->length += 1;
     79     return 1;
     80 }
     81 
     82 /* 删除数据 */
     83 int deleteSqList(sqlist* L,int n)
     84 {
     85     int i;
     86     if(n < 0|| n > L->length)
     87     {
     88         printf("sqlist delete error!
    ");
     89         return 0;
     90     }
     91     for(i = n;i < L->length;i++)
     92     {
     93         *(L->sqelem+i) = *(L->sqelem+i+1);
     94     }
     95     L->length -= 1;
     96     return 1;
     97 }
     98 
     99 int main()
    100 {
    101     sqlist sqLsit1;
    102     int err;
    103     err = sqListInit(&sqLsit1);
    104     if(err)
    105         printSqList(&sqLsit1);
    106     printf("
    ");
    107     /* 插入数据 */
    108     err = insertSqList(&sqLsit1,5,20);
    109     if(err)
    110         printSqList(&sqLsit1);
    111     printf("
    ");
    112     /* 删除 */
    113     err = deleteSqList(&sqLsit1,5);
    114     if(err)
    115         printSqList(&sqLsit1);
    116     return 0;
    117 }
  • 相关阅读:
    Flask学习笔记1:基础知识
    Git学习笔记3:下载指定项目的单个文件或文件夹
    Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题
    Python学习笔记32:UDP协议链接
    Python学习笔记31:图片URL批量转存到本地
    软件安装笔记3:tesseract-ocr for mac和homebrew
    软件安装笔记2:Aria2百度云加速下载器
    软件安装笔记1:破解安装SecureCRT for mac及解决中文乱码问题
    forward(转发)与redirect(重定向)的区别
    剑指Offer_编程题_丑数
  • 原文地址:https://www.cnblogs.com/yang-cheng/p/12907430.html
Copyright © 2011-2022 走看看