线性表基本操作

  • 插入删除
  • 建表
  • 划分
  • 归并
  • 逆置
  • 去最值
  • 其他
    线性表操作属性

插入操作

  • 判断位置是否合法
  • 取值 0 到 length
  • 小于maxSize
  • 移动元素从后往前
  • 调整顺序表length的长度
    顺序表插入流程

    删除操作

  • 顺序从前往后移动
  • 调整length长度
  • 清零 length=0,元素虽然留在数组,但是可以认为是隐藏的,当length等于0时,不可以再删除元素

    int deleteElem(int sqList[],int &length,int p,int &e)
    {
    /*首先判断参数是否合法*/
    if(p<0 || p>length-1){
      return 0;
    }
    e = sqList[p];
    for(int i=p;i<length-1;++i){
      sqList[i]=sqList[i+1];
      /*注意要变动静态表的长度*/
      --length;
    }
    return 1;
    }

建表(链表分为头插法和尾插法)

  • 带头结点head指针
  • 一开始没有指向
  • 数据域的来源,一个是键盘输入,一个是数组提供

    /*尾插法Rear,一般用带头节点的单链表*/
    void createLinkListRear(LNode *&head)
    {
    head = (LNode*)malloc(sizeof(Lnode));
    head->next = NULL;/*需要初始化*/
    /*定义两个指针一个是当前的p,一个是尾节点r*/;
    LNode *p = NULL,*r = head;
    int n;
    std::cin>>n; // scanf("%d",&n)
    for(int i=0;i < n ; ++)
    {
      p = (LNode*)malloc(sizeof(LNode));
      p->next = NULL;
      std::cin>>p->data;//scanf("%d",&(p->data));
      /*建好之后,r节点为尾节点,p节点需要基础*/
      p->next = r->next;
      r->next = p;
      r = p;
    }
    }

标签: none

添加新评论