知交

数据结构初探索——顺序表(代码源于教材)

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

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

现在唯一的疑点就是引用操作,整个代码写出来后是有报错的,具体报错原因就是在&符号的引用,上百度搜了下,大概就是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;
} 

 

posted on 2021-03-10 22:39  知交  阅读(119)  评论(0编辑  收藏  举报

导航