C语言实现数据结构顺序存储

    xiaoxiao2023-10-28  172

    C语言实现数据结构顺序存储

    // 头文件 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define MAXSIZE 10 //顺序存储结构 模仿数组的相关操作 typedef int DataType; typedef struct { DataType data[MAXSIZE]; int length; }SqList; //增 删 查 改 排 void InitSqList(SqList *L); void ShowSqList(SqList *L); void InsertSqList(SqList *L,int local,int val);//三个形参 一个需要知道线性表的首地址 另外需要知道要插入的位置以及插入的元素 void DeleteSqList(SqList *L,int local);//两个参数 一个是需要知道线性表的地址 另一个需要知道删除的位置是是什么 int SeekSqList(SqList *L,int num);//需要两个参数 一个是线性表的地址 另一个是返回值 也就是对应元素的位置 或者是下标 void main() { SqList L; //使用指针的方式访问数组 L其实是一个SqList类型的变量 虽然定义了一个数组 int local; InitSqList(&L);//初始化线性表 将线性表的长度置为 0 //插入10个元素 printf("初始数组:\n"); ShowSqList(&L); for(local = 1;local <= MAXSIZE;local++) { InsertSqList(&L,local,local*10); } //遍历一下当前数组 printf("\n插入元素后的数组:\n"); ShowSqList(&L); DeleteSqList(&L,5); printf("\n删除后的数组:\n"); ShowSqList(&L); printf("\n"); local = SeekSqList(&L,80); printf("\n待查找元素的位置:local = %d\n",local); } void InitSqList(SqList * L) { L->length = 0; } void ShowSqList(SqList *L) { int i; for(i = 0; i < L->length;i++) { printf("%d\t",L->data[i]); } } void InsertSqList(SqList *L,int local,int val)//这里的local指的是位置 所以下标i = local - 1 { int j; int i; i = local - 1; //有两种情况不允许插入 //第一种 数组满 不能再插入 if(L->length == MAXSIZE) { printf("数组元素已满,不允许继续插入元素!"); exit(1); } //第二种 插入的元素下标为负 或者是 插入元素的下标比当前数组长度要长 else if(i < 0 || i > L->length) { printf("插入的位置不合法!"); exit(1); } else { //首先将需要插入的位置空出来 for(j = L->length - 1;j >= i;j--) { L->data[j + 1] = L->data[j]; } L->data[i] = val; L->length++; } } void DeleteSqList(SqList *L,int local) { int i = local - 1; int j; if(i < 1 || i > L->length) { printf("删除位置不合法!"); exit(1); } else { //删除的思路是将要删除位置后面的元素依次向前移动 并且将数组长度-1 for(j = i + 1;j < L->length;j++) { L->data[j-1] = L->data[j]; } L->length--; } } int SeekSqList(SqList *L,int num) { int temp; int i; for(i = 0; i < L->length;i++) { if(num == L->data[i]) { temp = i; break; } } if(i == L->length) { printf("元素不存在!"); exit(1); } return temp + 1; }
    最新回复(0)