zoukankan      html  css  js  c++  java
  • C语言——顺序表插入、删除、定位运算算法

    说明:将元素x插入到顺序表L的第i个数据元素之前,这个i是从1开始的,但是
    程序中数组都是从0算起的,不要混淆了。

    头文件:

    header.h

    // 顺序表的结构定义
    #define Maxsize 100
    //const int Maxsize = 100; // 预先定义一个足够大的常数
    
    typedef struct
    {
        int data[Maxsize]; // 存放数组的数组
        int length; // 顺序表的实际长度
    }SeqList; // 顺序表类型名为SeqList
    
    // SeqList L 定义L为一个顺序表

    主体文件:

    main.c

    顺序表插入

    #include <stdio.h>
    #include "header.h"
    
    // 顺序表插入运算
    void InsertSeqlist(SeqList *L, int x, int i)
    {
        int j;
        if(L->length == Maxsize) printf("表已满");
        if(i < 1 || i > L->length + 1) printf("位置错"); // 检查插入位置是否合法
        for(j = L->length;j >= i;j--)
        {
            L->data[j] = L->data[j - 1]; // 整体依次向后移动
        }
        L->data[i - 1] = x;
        L->length++;
    }
    
    main()
    {
        int i;
        int n = 5;
        SeqList s = {{1,2,3,4,5}, n};
        InsertSeqlist(&s, 99, 2);
        for(i = 0;i < n + 1;i++) {
            printf("%d
    ", s.data[i]);
        }
        printf("
    ");
    }

    删除线性表中第i个数据结点

    #include <stdio.h>
    #include "header.h"
    
    // 删除线性表中第i个数据结点
    void DeleteSeqList(SeqList *L, int i)
    {
        int j;
        if(i < 1 || i > L->length) printf("非法位置
    ");
        for(j = i;j < L->length;j++)
        {
            L->data[j - 1] = L->data[j]; // 依次左移
        }
        L->length--;
    }
    
    main()
    {
        int i;
        int n = 5;
        SeqList L = {{1,2,3,4,5}, n};
        DeleteSeqList(&L, 2);
        for(i = 0;i < n - 1;i++)
        {
            printf("%d
    ", L.data[i]);
        }
    }

    在顺序表中查找值为x的结点

    #include <stdio.h>
    #include "header.h"
    
    // 在顺序表中查找值为x的结点
    int LocateSeqList(SeqList L, int x)
    {
        int i = 0;
        while(i < L.length && L.data[i] != x) i++;
        if(i < L.length) return i + 1;
        else return 0;
    }
    
    main()
    {
        SeqList L = {{100, 58, 102, 99, 2}, 5};
        printf("%d
    ", LocateSeqList(L, 2)); // 5
    }
  • 相关阅读:
    grunt安装
    RequireJS实例分析
    Linux下解压rar文件
    windows(64位)下使用curl命令
    RequireJS学习资料汇总
    Linux下firefox安装flash player插件
    caj转pdf——包含下载链接
    《社会化营销:人人参与的营销力量》—— 读后总结
    《税的真相》—— 读后总结
    基于代理的数据库分库分表框架 Mycat实践
  • 原文地址:https://www.cnblogs.com/lqcdsns/p/7309741.html
Copyright © 2011-2022 走看看