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

    /*练习:实现从键盘输入整数, 顺序表里面,按增长方式进行存储(输入正整数,插入数据,输入负整数,删除数据.  输入3 插入数据3 到顺序表里面;输入-3,把3数据从顺序顺删除)。

    数据结构:指数据之间的相互关系
    包括:
    1. 逻辑结构:表示数据运算之间的抽象关系
    分:线性结构 和非线性结构
    2. 存储结构:逻辑结构在计算机实现
    分:顺序存储方法、链式存储方法、索引存储方法、散列存储方法
    3、数据运算:对数据进行的操作。插入/删除/查找/排序


    线性表:这是一种逻辑结构,班级同学是线性表。特征,所有的元素都一对一关系
    (数学语言:任何一个元素,有且仅有一个直接前驱节点和直接后驱节点,第一个节点没有直接直接前驱节点,最后一个节点 没有后驱节点)
    使用用存储结构中的:顺序存储方法、链式存储方法
    顺序存储方法:
    ---》顺序表:
    --》1.定义顺序表/初始化顺序表/插入/删除/

    #include<stdbool.h>
    #include<stdlib.h>
    #include<stdio.h>
    #define SIZE 12

    //声明
    struct seqlist
    {
      int last;
      int data[SIZE];
    };

    //初始化
    struct seqlist *init_seqlist()
    {
      struct seqlist *sl = malloc(sizeof(struct seqlist));
      sl->last = -1;
      return sl;
    }

    //判断顺序表是否满
    bool if_full(struct seqlist *sl)
    {
      return sl->last == SIZE-1;
    }

    //插入操作
    bool inser_node(int data,struct seqlist *sl)
    {
      if(if_full(sl))
        return false;
      int i;
      for(i=sl->last;i>=0;i--)
    {
      if(data <sl->data[i])
        continue;
      else break;

    }
    int j;
    for(j = sl->last;j>i;j--)
    {
      sl->data[j+1] = sl->data[j];

    }
      sl->data[j+1] = data;
      sl->last++;
      return true;
    }

    //判断顺序表是否为空
    bool if_null(struct seqlist *sl)
    {
      return sl->last == -1;
    }

    //删除操作
    bool remove_node(int data,struct seqlist *sl)
    {
      if(if_null(sl))
        return false;
    //location
    int i;
    for(i = sl->last;i>=0;i--)
    {
      if(data!=sl->data[i])
      continue;
      else
      {

        printf("find failed!");
        break;
      }
    }
    int j;
    for(j=i;j<=sl->last;j++)
    {
      sl->data[j] = sl->data[j+1];
    // printf("%d",sl->data[j-1]);
    }
      sl->last--;
      return true;

    //move node


    }

    //将数据打印出来
    void show(struct seqlist *sl)
    {
    int i;
    for(i=0;i<=sl->last;i++)
      printf("%d ",sl->data[i]);
      printf(" ");
    }
    int main()
    {
      struct seqlist *sl = init_seqlist();
      int n;
    while(1)
      {
        scanf("%d",&n);
        if(n>0)
        {
        if(inser_node(n,sl))
        show(sl);
        }
      else if(n<0)
        {
        if(remove_node(-n,sl))
        show(sl);
        else
        printf("remove failed!");
        }
      }
      return 0;
    }

  • 相关阅读:
    3月9号作业
    7、循环之while循环和深浅copy
    6、可变不可变类型和运算符以及流程控制之if判断
    5、垃圾回收机制与用户交互以及运算符
    作业3月5号
    3月4号作业
    4、语法之变量以及基本数据类型
    3、Python介绍
    2、计算机基础详解
    五、流程控制值if...else
  • 原文地址:https://www.cnblogs.com/defen/p/5199110.html
Copyright © 2011-2022 走看看