zoukankan      html  css  js  c++  java
  • 数据结构初探索——顺序表(代码源于教材)

    新学期刚开始数据结构,课上听的很懵,这里把书本上的代码自行抄录下来并注释

    主要是有关顺序表的一些基本操作

    现在唯一的疑点就是引用操作,整个代码写出来后是有报错的,具体报错原因就是在&符号的引用,上百度搜了下,大概就是C语言不支持引用,但是课本上既然是用C写的,这样的解释难免显得有点牵强,在这里先留下疑问,等在以后的学习中解决。

    #include <stdio.h>
    #include <stdlib.h>
    #define MAXSIZE 100
    typedef int DataType;
    typedef struct{
        DataType data[MAXSIZE];
        int last;
        //last用来记录线性表中最后一个元素在数组data[]中的位置,空位置为-1 
    }SeqList;
    
    //初始化顺序表
    //InitSlist函数的作用大概就是引用传来的顺序表,&是引用传递的形参?? 
    SeqList InitSList(SeqList &L){
        L.last=-1; 
    } 
    //求顺序表的长度(即顺序表中Last数据+1)
    int GetLength(SeqList &L){
        return(L.last+1);
    }
    //在第i个位置插入一个新结点,第i个元素在data[]中的下标为i-1;
    int InsertSList(SeqList &L,int i,DataType x){
        int j;
        if(i<1||I>L.last+2) return(-1);//超出顺序表长度或者输入数据不对
        if(L.last==MAXSIZE-1) return(0);//顺序表已满
        for(j=L.last;j>=i-1;j--){//第i个以后的元素依次后移 (注意这是从最后一个元素开始移动)
            L.data[j+1]=L.data[j];
        } 
        L.data[i-1]=x;
        L.last++;
        return 1; 
    }  
    //删除操作,删除第i个元素,改元素在data[]中的下标为i-1 
    int ListDelete(SeqList &L,int i){
        int j;
        if(i<1||i>L.last+1) return(-1);//位置输入错误 
        if(L.last==-1) return(0);//顺序表为空
        for(j=i;j<=L.last;j++){//用第i+1个元素覆盖第i个元素,然后依次后推,注意下标比实际位置小1 
            L.data[j-1]=L.data[j];
        }
        L.last--;
        return 1; 
    }
    //查找操作(这里主要按照序号查找)
    int GetData(SeqList &L,DataType x){
        int i=0;
        if(L.last==-1) return(-1);//顺序表为空
        while(i<=L.last&&L.data[i]!=x) i++;
        if(i<n) return(i+1);//返回的为所查找数据的位置 
        else return(-1);
    } 
    
    int main(){
        return 0;
    } 
    人生如逆旅,我亦是行人
  • 相关阅读:
    Selenium系列(十五)
    Selenium系列(十四)
    Selenium系列(十三)
    Selenium系列(十二)
    Linux常用命令
    Linux
    Linux常用命令
    Linux常用命令
    Mysql常用sql语句(2)- 操作数据表
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/sz2003/p/14514757.html
Copyright © 2011-2022 走看看