数据结构240808作业

作业

自定义顺序表,实现顺序表按照位置插入和删除功能(上传到作业连接)。

mymain.c

复制代码
#include<myhead.h>
#include "list.h"

int main(int argc, const char *argv[])
{
	//申请堆区空间返回地址
	Plist L=apply_area();//调用申请空间函数
	//循环输入n个学生信息
	input_stu(L,4);
	//循环输出n个学生信息
	output_stu(L);
	//按照位置删除一个学生
	dele_pos(L);
	output_stu(L);
	//按照位置插入一个学生
	insert_pos(L);
	output_stu(L);
	free(L);
	L==NULL;
	return 0;
}

list.c

复制代码
#include "list.h"

Plist apply_area()
{
	Plist p=malloc(sizeof(List));//申请空间
	if(p==NULL)
	{
		printf("malloc fail\n");
		return NULL;
	}
	p->len=0;//长度初始化为0
	memset(p->data,0,sizeof(p->data));//清空缓冲区
	return p;//返回地址给主函数
}
void input_stu(Plist L,int n)
{
	printf("请输入学生信息:\n");
	int i=0;
	for(i=0;i<n;i++)
	{
		printf("请输入第%d个学生信息:\n",i+1);
		printf("请输入年龄:");
		scanf("%d",&L->data[i].age);
		printf("请输入姓名:");
		scanf("%s",L->data[i].name);
		printf("请输入成绩:");
		scanf("%d",&L->data[i].score);
		L->len++;//计数器+1
	}
}
void output_stu(Plist L)
{
	printf("学生信息如下:\n");
	printf("年龄\t姓名\t成绩\n");
	int i=0;
	for(i=0;i<L->len;i++)
	{
		printf("%d\t%s\t%d\n",L->data[i].age,L->data[i].name,L->data[i].score);
	}
}
int empty(Plist L,int pos)
{
	if(NULL==L ||pos<1 || pos>L->len ||L->len==0)
	{
		return 1;//返回真
	}
	return 0;//返回假
}
void dele_pos(Plist L)
{
	my_int pos=0;
	printf("请输入要删除的位置:");
	scanf("%d",&pos);
	int i=0,sub=-1;
	if(empty(L,pos))
	{
		printf("删除失败\n");
	}
	else
	{
		int i=0;
		for(i=pos-1;i<L->len;i++)
		{
		 	L->data[i]=L->data[i+1];
		}
		L->len--;
	}
}
void insert_pos(Plist L)
{
	my_int pos=0;
	stu e={19,"张若仪",100};//要插入的学生信息
	printf("请输入要插入的位置:");
	scanf("%d",&pos);
	if(pos<1 || pos>L->len+1 || L->len==MAX || L==NULL)
	{
		printf("插入失败\n");
	}
	else
	{
		int i=0;
		for(i=L->len-1;i>=pos-1;i--)
		{
			L->data[i+1]=L->data[i];
		}
		L->data[pos-1]=e;//将张若仪插入到表中
		L->len++;
	}
}

list.h

复制代码
#ifndef _LIST_H_
#define _LIST_H_

#define MAX 30//宏定义最大存储容量
#include <myhead.h>
typedef int my_int;
typedef char STR[20];

typedef struct
{
	my_int age;//年龄
	STR name;//姓名
	my_int score;//成绩
}stu;//学生信息结构体

typedef struct
{
	stu data[MAX];//最大存储容量
	int len;//计数器,统计学生数量
}List,*Plist;
//定义结构体普通类型List和指针类型Plist

Plist apply_area();
void input_stu(Plist L,int n);
void output_stu(Plist L);
void dele_pos(Plist L);
void insert_pos(Plist L);

#endif

运行结果:

相关推荐
吞下星星的少年·-·9 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
Msshu12312 小时前
2~5串锂电快充优选|XSP36 Type‑C升压/升降压快充管理芯片
数据结构·随机森林·贪心算法·排序算法·线性回归·启发式算法
动词ing15 小时前
【学习笔记】数据结构栈与队列(栈先进后出+队列先进先出+括号匹配+消消乐模型)
数据结构·笔记·学习
a1879272183115 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
zcmodeltech16 小时前
火电厂模型能演示冷态启动和故障处理吗?——基于STM32与Modbus RTU的集控实训控制系统设计
数据结构·stm32·单片机·嵌入式硬件·能源
Doubbbbbbble云17 小时前
区间合并问题的常见算法模式与优化思路4
java·数据结构·算法
David猪大卫17 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
linx29519 小时前
单元九 · 零基础路线图-第 7–9 周·类与 RAII
c语言·开发语言·数据结构·c++·嵌入式硬件·算法
布莱克60519 小时前
C++ 七大排序算法详解:选择、冒泡、插入、计数、堆、快速与归并排序
数据结构·c++·算法·排序算法
科学实验家20 小时前
最小生成树:Prim,kruskal
数据结构·c++·算法