数据结构初探索——顺序表(代码源于教材)
新学期刚开始数据结构,课上听的很懵,这里把书本上的代码自行抄录下来并注释
主要是有关顺序表的一些基本操作
现在唯一的疑点就是引用操作,整个代码写出来后是有报错的,具体报错原因就是在&符号的引用,上百度搜了下,大概就是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; }
人生如逆旅,我亦是行人