代码编写流程,请看顺序表的概念篇,以下代码全部使用c++编写。讲解了对顺序表的增删改查。以及功能测试
#include "iostream" using namespace std; #define eleType int struct SequentialList { /* data */ eleType* elements; int size; int capacity; }; /*初始化*/ void InitSequentialList(struct SequentialList* list,int capacity) { list->elements = new eleType[capacity]; list->size = 0; list->capacity = capacity; } /*销毁*/ void destory(struct SequentialList* list) { delete [] list->elements; } /*获取大小*/ /*是否为空*/ bool isEmpty(struct SequentialList* list) { return list->size == 0; } /*插入*/ void insert(struct SequentialList* list,int index,eleType element) { /* 1.输入参数是否合法 *2.空间不够扩展空间 *3.插入数据,从后向前移动数据,之道index,将index替换成element,size++ */ if(index < 0 || index>list->size) { std::invalid_argument("invaid index"); } if(list->size == list->capacity) { int newCapacity = list->capacity*2; eleType* Newelemnt = new eleType[newCapacity]; for(int i = 0; i < list->size; i++) { Newelemnt[i] = list->elements[i]; } delete [] list->elements; list->elements = Newelemnt; list->capacity = newCapacity; } for(int i = list->size;i>index;i--) { list->elements[i] = list->elements[i-1]; } list->elements[index] = element; list->size++; } int size(struct SequentialList* list) { return list->size; } /*删除元素*/ void deleteElement(struct SequentialList* list,int index) { if(index < 0 || index>=list->size) { std::invalid_argument("invaid index"); } for(int i = index;i<list->size;i++) { list->elements[i] = list->elements[i+1]; } list->size--; } /*查找元素的下标*/ int findElement(struct SequentialList* list,eleType element) { for(int i = 0;i< list->size;i++) { if(element == list->elements[i]) { return i; } } return -1; } /*获取输入索引的元素*/ int getElement(struct SequentialList* list,eleType index) { if(index < 0 || index>=list->size) { std::invalid_argument("invaid index"); } return list->elements[index]; } /*更新指定索引的值*/ void updataElement(struct SequentialList* list,eleType index,int value) { if(index < 0 || index>=list->size) { std::invalid_argument("invaid index"); } list->elements[index] = value; } int main() { struct SequentialList mylist; InitSequentialList(&mylist,10); for(int i = 0;i < 10;i++) { insert(&mylist,i,i*10); } for(int i = 0;i < size(&mylist);i++) { cout << getElement(&mylist,i) << " "; } cout << findElement(&mylist,20) << endl; updataElement(&mylist,2,1314); for(int i = 0;i < size(&mylist);i++) { cout << getElement(&mylist,i) << " "; } deleteElement(&mylist,2); for(int i = 0;i < size(&mylist);i++) { cout << getElement(&mylist,i) << " "; } return 0; }