2是1道光 的學生作業:
student.h
#ifndef __STUDENT_H__
#define __STUDENT_H__
#define MAX 3
#include
#include
#include
//實際學?的存儲
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 *seq);
extern int delete_data_seqlist(seqlist_t *seq,datatype_t data);
#endif
student.c
#include "student.h"
seqlist_t *create_empty_seqlist(){
seqlist_t *l=NULL;
l=(seqlist_t *)malloc(sizeof(seqlist_t));
if(NULL==l){
printf("malloc is fail\n");
return NULL;
}
memset(l,0,sizeof(seqlist_t));
return l;
}
int is_full_seqlist(seqlist_t *l){
return l->n==MAX ? 1 : 0;
}
int is_empty_seqlist(seqlist_t *l){
return l->n==0 ? 1 : 0;
}
int delete_data_seqlist(seqlist_t *l,datatype_t data){
if(is_empty_seqlist(l)){
printf("data is empty\n");
return -1;
}
int i,j=0;
for(i=0;in;i++){
if(data.id != l->buf[i].id){
l->buf[j]=l->buf[i];
j++;
}
}
l->n=j;
if(i==j){
printf("target data not exist\n");
return -2;
}
return 0;
}
void insert_data_seqlist(seqlist_t *l,datatype_t data){
strcpy(l->buf[l->n].name,data.name);
l->buf[l->n].id=data.id;
l->buf[l->n].age=data.age;
l->n++;
return;
}
void printf_data_seqlist(seqlist_t *l){
int i;
printf("name\tid\tage\n");
for(i=0;in;i++){
printf("%s\t%d\t%d\n",l->buf[i].name,l->buf[i].id,l->buf[i].age);
}
return;
}
main.c
#include "student.h"
int main(){
seqlist_t *l=NULL;
l=create_empty_seqlist();
datatype_t data;
printf("please input %d student info:name,id,age\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");
printf("please input you want to delete id\n");
int delete_id;
scanf("%d",&delete_id);
datatype_t data2;
data2.id=delete_id;
if(delete_data_seqlist(l,data2)){
printf("seqlist is empty or data is not exist\n");
}else{
printf("delete success\n");
printf_data_seqlist(l);
}
free(l);
l=NULL;
return 0;
}
【圖片】