C++ 顺序表练习
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Array //定义一个数据存储结构 { int* data;//内存地址 int length;//顺数表长度 int listsize;//顺序表大小 }; typedef struct Array Array; Array* createArray() { Array *temp = (Array*)malloc(sizeof(Array)); //顺序表的结构体初始化 if (temp == NULL) //判断内存是否申请成功 { printf("顺序表初始化失败!\n"); return NULL; } temp->data = (int* )malloc(sizeof(int) * 10); //申请10个int大小的内存 temp->length = 0; temp->listsize = 10; printf("顺序表创建完成!\n"); return temp; } int insertArray(Array * arr, int i, int n) //存放数据至顺序表中 { if (i<1 || i>arr->length + 1) //判断插入的位置是否合法, 只能按顺序插入, return 0; if (arr->length >= arr->listsize) //动态分配内存,如果空间已满申请更大的内存,用realloc在原本大小上扩容 { arr->data = (int*)realloc(arr->data, (arr->listsize + 5) * sizeof(int)); if (arr->data == NULL) return NULL; arr->listsize += 5; } int k; for (k = arr->length - 1; k >= i - 1; k--) { arr->data[k + 1] = arr->data[k]; } arr->data[i-1] = n; arr->length++; return 1; } void Show_Array(Array* arr) //打印顺序表中的元素 { if (arr->length == 0) { printf("顺序表为空!\n"); } else { printf("顺序表中的元素为:"); for (int i = 0; i < arr->length; i++) { printf("%d ", arr->data[i]); } printf("\n"); } } void Find_Ch_Array(Array* arr,int n) //查找顺序表中第n位置的元素值 { if (arr->data == NULL) printf("顺序表为空!\n"); if(arr->length<n) printf("没有存这么多的数据!\n"); else printf("第%d个元素的值为:%d\n",n, arr->data[n - 1]); } void Set_Ch_Array(Array* arr, int n, int x) { if (arr->data == NULL) printf("顺序表为空!\n"); if (arr->length < n) printf("没有存这么多的数据!\n"); else arr->data[n - 1] = x; printf("替换成功!\n"); }
void list_insert_arr(Array* arr,int n) //指定位置插入数据
{
if (arr->data == NULL)
printf("顺序表为空!\n");
if (arr->length < n)
printf("没有存这么多的数据!\n");
else
{
for (int i = 0; i < 10; i++)
{
int nun;
scanf("%d", &nun);
insertArray(arr, n+i, nun);
}
}
}
int main() { Array* a=createArray(); for (int i = 0; i < 50; i++) { insertArray(a, i, i + 10); } Show_Array(a); Find_Ch_Array(a, 5); system("pause"); return 0; }