#include <iostream> using namespace std; /* 线性表 */ #define LIST_INIT_SIZE 5 #define LIST_INCREASE_SIZE 10 typedef struct ListSq { int *data; int length; // 长度 int listsize; // 容量 }ListSq; int createSq(ListSq &l) { // 初始化线性顺序表 l.data = (int*)malloc(LIST_INIT_SIZE * sizeof(int)); l.listsize = LIST_INIT_SIZE; l.length = 0; return 1; }//createSq void init(ListSq &l) { // 初始化内容 for(int i = 0; i < 4; ++i) { printf("%s", "输入一个数字:"); scanf("%d,", &l.data[i]); ++l.length; } }//add void print(ListSq &l) { // 打印 for(int i = 0; i < l.length; ++i) { printf("%d,", l.data[i]); } printf("长度:%d", l.length); }//print void add_p(ListSq &l, int position, int data) { // 添加一个元素 if(position < 1 || position > l.length + 1) exit(0); if(l.length >= l.listsize) l.data = (int*)realloc(l.data, (l.listsize + LIST_INCREASE_SIZE) * sizeof(int)); for(int i = l.length; i > position - 1; --i) { l.data[i] = l.data[i - 1]; } l.data[position - 1] = data; ++l.length; } void delete_p(ListSq &l, int position, int &data) { // 删除元素 if(position < 1 || position > l.length) exit(0); data = l.data[position - 1]; for(int i = position - 1; i < l.length; ++i) { l.data[i] = l.data[i + 1]; } --l.length; } void main() { ListSq l1; createSq(l1); init(l1); print(l1); printf("/n"); add_p(l1, 2, 9); print(l1); printf("/n"); add_p(l1, 2, 8); print(l1); printf("/n"); add_p(l1, 2, 7); print(l1); printf("/n"); int t; delete_p(l1, 2, t); print(l1); printf("/n"); printf("删除的元素之是%d", t); }