#include<stdio.h>
#define Size 5
#include<stdlib.h>
typedef struct one{
int *head; //声明一个动态数组 (数组长度不确定)
int length; //声明数组的长度
int size; //声明数组占用的空间大小
}T;
//定义一个函数来初始化结构体
T initialize()
{
T t;
t.head=(int*)malloc(Size*sizeof(int));//为结构体变量t中的动态数组分配空间
if(!t.head) //如果分配失败,输出提示
{
printf("初始化失败!!!");
exit(0);
}
t.length=0; //初始化长度为零
t.size=Size; //初始化占用内存为零
return t; //返回结构体变量t
}
//定义一个函数来输出结构体变量t中的动态数组的值
void output(T t) //输出函数,将动态数组中的元素输出
{
for(int i=0;i<t.length;i++)
{
printf("%d\t",t.head[i]); //输出元素值
}
printf("\n");
}
//定义一个函数来删除结构体变量t中的动态数组元素
T Delete(T t,int num){
if(num>t.length||num<1) //检查要删除的元素位置是否符合动态数组的长度
{
printf("删除的元素的位置错误!!!\n");
exit(0);
}
//删除操作
for(int i=num-1;i<t.length-1;i++)
{
t.head[i]=t.head[i+1];
}
t.length--;
return t;
}
//定义一个的函数来插入元素
T Insert(T t,int num2,int weizhi)
{
if(weizhi>t.length+1||weizhi<0)
{
printf("插入的位置有问题!!!");
return t;
}
if(t.length>=t.size)
{
t.head=(int*)realloc(t.head,(Size+1)*sizeof(int));
if(!t.head)
{
printf("存储分配失败!!!");
return t;
}
t.size+=1;
}
for(int i=t.length-1;i>=weizhi;i--)
{
t.head[i+1]=t.head[i];
}
t.head[weizhi]=num2;
t.length++;
return t;
}
//定义一个函数,来查询元素的位置。
int select(T t,int yuansu)
{
for(int i=0;i<t.length;i++)
{
if(t.head[i]==yuansu)
{
return i;
}
}
return -1;
}
//定义一个函数来更改元素
T change(T t,int yuanshu2,int yuanshu3)
{
int A=select(t,yuanshu2);
t.head[A] =yuanshu3;
return t;
}
main()
{
T t=initialize(); //初始化结构体变量t
printf("动态数组中的元素为:\n");
for(int i=1;i<=Size;i++) //为动态数组赋值
{
t.head[i-1]=i;
t.length++;
t.size++;
}
output(t); //调用output()函数输出结构体t中的动态数组的值
printf("请输入要删除的元素:\n");
int num;
scanf("%d",&num);
t=Delete(t,num);
printf("删除元素后的动态数组中的值为:\n");
output(t);
printf("请输入要插入的元素,和位置:\n");
int num2,weizhi;
scanf("%d%d",&num2,&weizhi);
t=Insert(t,num2,weizhi);
printf("插入元素后的动态数组中的值为:\n");
output(t);
printf("请输入要查询的元素:\n");
int yuansu;
scanf("%d",&yuansu);
printf("查询元素的位置为:\n%d",select(t,yuansu));
printf("\n请输入更改的元素和更改值\n");
int yuanshu2,yuanshu3;
scanf("%d%d",&yuanshu2,&yuanshu3);
change(t,yuanshu2,yuanshu3);
printf("更改后的动态数组元素为:\n");
output(t);
}
数据与结构之顺序表的实现
最新推荐文章于 2023-02-28 19:25:58 发布