
作业社区
探索学习新天地,共享知识资源!
风_往北吹 的学生作业:
#ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include #include #include #define MAX 10 struct student { char name[20]; int id; int age; }; typedef struct student datatype_t; typedef struct { datatype_t buf[MAX]; int n; }seqlist_t; extern seqlist_t* create_empty_seqlist(); extern int is_full_seqlist(seqlist_t* l); extern void insert_data_seqlist(seqlist_t* l, datatype_t data); extern void printf_data_seqlist(seqlist_t* l); extern int is_empty_seqlist(seqlist_t* l); extern int delete_data_seqlist(seqlist_t* l, datatype_t data); #endif #include"seqlist.h" //1.创建顺序表,分配内存空间 seqlist_t* create_empty_seqlist() { seqlist_t* l = (seqlist_t*)malloc(sizeof(seqlist_t)); if (NULL == l) { printf("Malloc Failed!\n"); return NULL; } memset(l, 0, sizeof(seqlist_t)); l->n = 0; return l; } //2.判断顺序表是否已满 int is_full_seqlist(seqlist_t* l) { return l->n == MAX ? 1 : 0;//已满返回1,否则返回0 } //3.插入数据 void insert_data_seqlist(seqlist_t* l, datatype_t data) { l->buf[l->n] = data; l->n++; } //4.输出数据 void printf_data_seqlist(seqlist_t* l) { printf("[NAME]\t[ID]\t[AGE]\n"); for (int i = 0; i < l->n; i++) { printf("%s\t%d\t%d\n", l->buf[i].name, l->buf[i].id, l->buf[i].age); } } //5.判断是否为空 int is_empty_seqlist(seqlist_t* l) { return l->n == 0 ? 1 : 0;//空返回1,否则返回0 } //6.删除元素 int delete_data_seqlist(seqlist_t* l, datatype_t data) { //6.1判断顺序表是否已经为空,如为空,不删除 if (is_empty_seqlist(l)) return -1; //6.2删除对应元素 int i = 0,j = 0; for (int i = 0; i < l->n; i++) { if (l->buf[i].name != data.name) { strcpy(l->buf[j].name, l->buf[i].name); l->buf[j].id= l->buf[i].id; l->buf[j].age = l->buf[i].age; j++; } } //6.3j值赋值给n l->n = j; //6.4判断要删除的数据是否还存在 if (i==j) { return -2; } else return 0; } #include"seqlist.h" int main() { seqlist_t* l = create_empty_seqlist(); datatype_t data; int ret = 0; printf("please input %d data\n", MAX); while (!is_full_seqlist(l)) { scanf("%s%d%d", data.name, &data.id, &data.age); insert_data_seqlist(l, data); } printf_data_seqlist(l); printf("\n\n================================\n"); printf("请输入想删除的信息\n"); scanf("%s%d%d", data.name, &data.id, &data.age); ret=delete_data_seqlist(l,data); switch (ret) { case 0:printf("%s对应信息已删除\n", data.name); break; case -1:printf("顺序表信息为空,当前不能删除数据操作\n"); break; case -2:printf("%s对应信息不存在\n", data.name); break; } //printf("顺序表信息为空,当前不能删除数据操作\n"); printf_data_seqlist(l); free(l); l = NULL; return 0; } 【图片】




