zoukankan      html  css  js  c++  java
  • 【数据结构】顺序线性表的几种常用方法

      ①:在线性表中插入数据

    int insertlist (seqlist *l, int i, int x)    //在线性表中插入数据
    {
        int k;
    
        if(i < 1 || i > l->last + 1)
        {
            printf("插入的位置不合法");
            return(ERROR);
        }
    
        if(l->last >= maxsize-1)
        {
            printf("线性表已经存满");
        }
    
        for(k = l->last; k >= i - 1;k--)
        {
            l->elem[k + 1] = l->elem[k];
        }
        l->elem[i-1] = x;
        l->last++;        //不要忘记把last加一
        return(OK);
    }

      ②:删除线性表中的元素:

    int deletelist(seqlist *l, int i)        //删除元素
    {
        int k;
        if(i < 1 || i > l->last + 1)
        {
            printf("删除位置不合法");
            return(ERROR);
        }
        
        for(k = i;k < l->last;k++)
        {
            l->elem[k - 1] = l->elem[k];
        }
        l->last--;
        return(OK);
    }

      ③:查找线性表元素:

    int locate(seqlist *l, int x)        //查找元素
    {
        int i;
        int k;
        for(i = 0;i < l->last;i++)
        {
            if(l->elem[i] == x)
            {
                k = i;
            }
            else
            {
                k = 0;
            }
        }
        return k;
    }

    所有代码:

    View Code
    #include <stdio.h>
    #include <stdlib.h>
    
    #define maxsize 1024
    #define OK 1
    #define ERROR 0
    
    typedef struct
    {
            int elem[maxsize];
            int last;        
    }seqlist; 
    
    int main()
    {
        int len,i,j; 
        int position,value;
        int delpos;
        int locval,loci;
        seqlist *la;
        la=(seqlist *)malloc(sizeof(seqlist));    //分配空间
    
        printf("请输入字符串的长度:");
        scanf("%d",&len);
        la->last = len;    //设置线性表的长度
    
        printf("请依次输入数:");
        for(i=0;i<la->last;i++)
        {
            scanf("%d",&la->elem[i]);    //设置值 不要忘记&符号
        }
    
        printf("输入的数字如下:");    
        for(j=0;j<la->last;j++)            //输出数据
        {
            printf("%d \n",la->elem[j]);
        }
    
        printf("请输入要插入元素的位置:");
        scanf("%d",&position);
    
        printf("请输入要插入元素的值:");
        scanf("%d",&value);
    
        insertlist(la,position,value);
    
        printf("添加后的线性表如下:");
        for(j=0;j<la->last;j++)            //输出数据
        {
            printf("%d \n",la->elem[j]);
        }
    
        printf("请输入删除元素的位置:");
        scanf("%d",&delpos);
        deletelist(la,delpos);
    
        printf("删除后的线性表如下:");
        for(j=0;j<la->last;j++)            //输出数据
        {
            printf("%d \n",la->elem[j]);
        }
    
        printf("输入要查找的元素:");
        scanf("%d",&locval);
        loci = locate(la,locval);
        printf("元素的位置是%d",locval);
    }
    
    int insertlist (seqlist *l, int i, int x)    //在线性表中插入数据
    {
        int k;
    
        if(i < 1 || i > l->last + 1)
        {
            printf("插入的位置不合法");
            return(ERROR);
        }
    
        if(l->last >= maxsize-1)
        {
            printf("线性表已经存满");
        }
    
        for(k = l->last; k >= i - 1;k--)
        {
            l->elem[k + 1] = l->elem[k];
        }
        l->elem[i-1] = x;
        l->last++;        //不要忘记把last加一
        return(OK);
    }
    
    int deletelist(seqlist *l, int i)        //删除元素
    {
        int k;
        if(i < 1 || i > l->last + 1)
        {
            printf("删除位置不合法");
            return(ERROR);
        }
        
        for(k = i;k < l->last;k++)
        {
            l->elem[k - 1] = l->elem[k];
        }
        l->last--;
        return(OK);
    }
    
    int locate(seqlist *l, int x)        //查找元素
    {
        int i;
        int k;
        for(i = 0;i < l->last;i++)
        {
            if(l->elem[i] == x)
            {
                k = i;
            }
            else
            {
                k = 0;
            }
        }
        return k;
    }
  • 相关阅读:
    JavaEE 7学习笔记
    RX232串口发送
    以8位并行数据为例确定crc-32的一般矩阵表示形式
    nios ii 13 主程序的函数可以用Open Declaration 查看,但是编译的时候却说 undefined reference to 。。。这是为什么?
    做uart 实验时,run configure 只能选择jtag_uart 而没有uart
    在做nios ii uart232 实验时出现undefined reference to `fclose'等错误。
    修改quartus 配置rom时memory很小的问题。
    关于VGA显示实验的问题
    Microsoft Visual Studio 2013 已停止工作的解决方法
    独家原创,拖拽任意控件移动任意目标,拖拽控件移动整个窗体
  • 原文地址:https://www.cnblogs.com/ngnetboy/p/2690178.html
Copyright © 2011-2022 走看看