一、数据结构基础之顺序表C语言实现
2012-05-05 20:53
906 查看
/* * 一、数据结构基础之顺序表 * 顺序表数据结构(结构的定义+在此结构上的操作) * --- 2012年4月21日 ---by lee */ #ifndef _SEQUENTIAL_LIST_H #define _SEQUENTIAL_LIST_H #include "Utility.h" //宏定义顺序表的空间大小 #define LISTSIZE 20 //类型定义 typedef int DataType; //声明顺序表类型结构体 typedef struct _SqList { DataType data[LISTSIZE];//存放数据元素的数组 int length;//记录顺序表的实际长度 } SqList; //对顺序表的基本操作 void InitList(SqList* list);//初始化顺序表 int GetLength(SqList* list);//获得当前顺序表的长度 DataType GetElement(SqList* list, int index);//返回表中位于位置index处的元素值(index从0到Length-1) void InsertElement(SqList* list, int index, DataType e);//在表中位置index处插入值为e的元素 void DeleteElement(SqList* list, int index);//删除表中位置index处的元素 void PrintList(SqList* list);//打印顺序表中的元素 //初始化顺序表 void InitList(SqList* list) { list->length=0; } //获得当前顺序表的长度 int GetLength(SqList* list) { return list->length; } //返回表中位于位置index处的元素值(index从0到Length-1) DataType GetElement(SqList* list, int index) { if((index < 0) || (index > list->length-1)) Error("Array Index Out Of Bounds"); return list->data[index]; } //在表中位置index处插入值为e的元素(index从0到Length为合法位置) void InsertElement(SqList* list, int index, DataType e) { //检查插入位置是否合法 if((index < 0) || (index > list->length)) Error("Illegal Inserted Position"); //检查表空间是否已满 if(list->length >= LISTSIZE) Error("Array Space Is Full"); //当在位置length处插入e时(即数组末尾下一位),无需移动任何元素 //当在位置index处插入时(index<length),从index~length-1的元素全部后移一位 for(int i=list->length-1; i>=index; i--) { list->data[i+1]=list->data[i]; } //在位置index处插入元素e list->data[index]=e; //更新顺序表长度 list->length++; } //删除表中位置index处的元素(index从0到Length-1) void DeleteElement(SqList* list, int index) { //检查删除位置是否合法 if((index < 0) || (index > list->length-1)) Error("Illegal deleted Position"); //当在位置length-1处删除e时(即数组末尾),无需移动任何元素 //当在位置index处删除时(index<length-1),从index+1~length-1的元素全部前移一位 for(int i=index; i<list->length-1; i++) { list->data[i]=list->data[i+1]; } //更新表长度 list->length--; } //打印顺序表中的元素 void PrintList(SqList* list) { for(int i=0; i<list->length; i++) { printf("%d\t",list->data[i]); } printf("\n"); } #endif //测试代码 /* SqList* list=(SqList*)malloc(sizeof(SqList)); InitList(list); InsertElement(list,0,1); InsertElement(list,1,2); InsertElement(list,2,3); InsertElement(list,3,4); InsertElement(list,4,5); InsertElement(list,5,6); PrintList(list); DeleteElement(list,3); PrintList(list); printf("%d\n",GetElement(list,1)); DeleteElement(list,6); */
相关文章推荐
- 一、数据结构基础之顺序表C语言实现
- 三、数据结构基础之顺序栈C语言实现
- [C语言][数据结构]基础的线性表的顺序表示和实现
- 七、数据结构基础之顺序串C语言实现
- 数据结构——顺序表的几个重要方法的C语言实现
- 数据结构基础(6) --顺序栈的设计与实现
- C语言 数组的顺序表示与实现 数据结构
- 数据结构基础(5)--C语言实现循环队列--静态
- 数据结构之---C语言实现二叉树的顺序存储
- 数据结构——顺序表(C语言实现)
- 数据结构(严蔚敏)C语言实现---线性表的顺序存储
- hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)
- 数据结构之C语言实现顺序表(SeqList)无主函数
- 数据结构基础(6) --顺序栈的设计与实现
- 数据结构之---C语言实现串的顺序存储
- 数据结构基础(6)--递归和函数调用--汉诺塔问题C语言实现
- 数据结构基础(1)--数组C语言实现--动态内存分配
- 栈与队列-顺序队列与链队列类模板的实现(数据结构基础 第3周)
- 数据结构 学习笔记之:顺序栈的C语言实现
- 数据结构基础8_循环队列(顺序实现)