一. 顺序表的来源
后面几张,基本上与数据结构有关,因为数据结果提供的是一种方法,而我写博客,就是用Java来实现。很经典的数据结构教材,用的是C语言来实现。
二. 数据结构
- 在数据结构中的顺序表
- 定义顺序表:
typedef struct { ElemType *elem; int length; int listsize; }SqList;
- 初始化顺序表:
Status InitSqList(SqList &L) { L.elem = (ElemType*)malloc(10*sizeof(ElemType)); if(!L.elem) return -2; L.length = 0; L.listsize = 100; return OK; }
- 在第i个位置插入
Status InsertSqList(SqList &L, int i, ElemType e) { //判断位置是否合法 if(i<1||i>L.length+1) return ERROR; if(L.length>=L.listsize) { newbase=(ElemType*)realloc(L.elem,(L.listsize+10)*sizeof(ElemType)); if(!newbase) return -2; L.elem = newbase; L.listsize += 10; } //插入 ElemType p,q; q = &(L.elem(i-1)); //q为待插入元素的位置 for(p=&(L.elem[L.length-1]); p>=q; --p) { *(p+1) = *p; } *q = e; ++L.length; return OK; }
- 删除某个位置的元素
Status DeleteSqList(SqList &L, int i, ElemType &e) { if(i<1||i>L.length) return ERROR; p = &(L.elem[i-1]); //p为待删除元素的位置 e = *p; q = L.elem+L.length-1; for(++p; p<=q; ++p) {//++p代表已经是下一位了 *(p-1) = *p; } }
- 翻译成用Java语言来实现
- 定义顺序表:
class SqList { //定义顺序表 final int MAX_LENGTH = 10; int length; int arry[]; ... }
- 初始化顺序表:
class SqList { ... //初始化 SqList() { length = 0; arry = new int[MAX_LENGTH]; } //已知一个数组,在初始化 SqList(int[] a) { length = a.length; arry = new int[MAX_LENGTH]; for(int i=0; i
- 在第i个位置插入
//插入 public boolean InsertSqList(int location, int e) { //满了 if(length == MAX_LENGTH) { return false; } //插入不合法 if(location<0||location>length) { return false; } //开始插 for(int i=length; i>location; --i) { arry[i+1] = arry[i]; } arry[location] = e; ++length; return true; }
- 删除某个位置的元素
public boolean DeleteSqList(int location) { //删除位置不合法 if(location<0||location>=length) { return false; } //开删 int p = location; for(++p; p
- 源码://明天补全
import java.util.Scanner; class SqList { //定义顺序表 final int MAX_LENGTH = 10; int length; int arry[]; //初始化 SqList() { length = 0; arry = new int[MAX_LENGTH]; } //已知一个数组,在初始化 SqList(int[] a) { length = a.length; arry = new int[MAX_LENGTH]; for(int i=0; ilength) { return false; } //开始插 for(int i=length; i>location; --i) { arry[i+1] = arry[i]; } arry[location] = e; ++length; return true; } public boolean DeleteSqList(int location) { //删除位置不合法 if(location<0||location>=length) { return false; } //开删 int p = location; for(++p; p欢迎分享,转载请注明来源:内存溢出
评论列表(0条)