为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
讨论题

慕尼黑0001808 的学生作业:

linklist.h //创建一个单向链表,把1,5,3,7,9无序数据要求按从大到小的方式利用有序插入的方式插入链表,并输出。 //linklist.h #ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include #include #include typedef int datatype_t; typedef struct node{ datatype_t data; struct node * next; }linknode_t; extern linknode_t * create_empty_linklist(); extern void insert_order_linklist(linknode_t * head,datatype_t data); extern int is_empty_linklist(linknode_t * head); extern int delete_data_linklist(linknode_t * head,datatype_t data); extern void printf_data_linklist(linknode_t * head); extern void free_linklist(linknode_t * head); #endif linklist.c // linklist.c #include "linklist.h" //创建空链表 linknode_t * create_empty_linklist() { linknode_t * head = NULL; head = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == head) { printf("malloc linknode_t fail\n"); return NULL; } memset(head,0,sizeof(linknode_t)); head->next = NULL; return head; } void insert_order_linklist(linknode_t * head,datatype_t data) { linknode_t * temp = NULL; temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("temp malloc fail\n"); return; } temp->data = data; linknode_t * p = head; while(p->next!=NULL && data > p->next->data) { p = p->next; } temp->next = p->next; p->next = temp; } void printf_data_linklist(linknode_t * head) { linknode_t * p = head; while(p->next!=NULL) { printf("%d ",p->next->data); p = p->next; } printf("\n"); } void free_linklist(linknode_t * head) { if(head == NULL)return; linknode_t * p = head; linknode_t * temp = NULL; while(p->next!=NULL) { temp = p; p = p->next; free(temp); temp = NULL; } free(p); p = NULL; } int is_empty_linklist(linknode_t * head) { return head->next == NULL?1:0; } int delete_data_linklist(linknode_t * head,datatype_t data) { linknode_t * p = NULL; linknode_t * q = NULL; int flag = 0; if(is_empty_linklist(head)) { return -1; } p = head; while(p->next != NULL) { if(p->next->data == data) { q = p->next; p->next = q->next; free(q); q = NULL; flag = 1; }else{ p = p->next; } } if(flag == 0){ return -2; } return 0; } main.c //main.c #include "linklist.h" int main() { linknode_t * head = NULL; head = create_empty_linklist(); datatype_t arr[] = {1,5,3,7,9,5,8,5,3}; for(int i = 0;i < sizeof(arr)/sizeof(arr[0]);i++) { insert_order_linklist(head,arr[i]); } printf_data_linklist(head); int ret = delete_data_linklist(head,3); if(ret < 0) { printf("没有删除任何数据\n"); }else{ printf("删除成功!\n"); } printf_data_linklist(head); free_linklist(head); return 0; }

得分 100
讨论题

慕尼黑0001808 的学生作业:

linklist.h //创建一个单向链表,把1,5,3,7,9无序数据要求按从大到小的方式利用有序插入的方式插入链表,并输出。 //linklist.h #ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include #include #include typedef int datatype_t; typedef struct node{ datatype_t data; struct node * next; }linknode_t; extern linknode_t * create_empty_linklist(); extern void insert_order_linklist(linknode_t * head,datatype_t data); extern void printf_data_linklist(linknode_t * head); extern void free_linklist(linknode_t * head); #endif linklist.c // linklist.c #include "linklist.h" //创建空链表 linknode_t * create_empty_linklist() { linknode_t * head = NULL; head = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == head) { printf("malloc linknode_t fail\n"); return NULL; } memset(head,0,sizeof(linknode_t)); head->next = NULL; return head; } void insert_order_linklist(linknode_t * head,datatype_t data) { linknode_t * temp = NULL; temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("temp malloc fail\n"); return; } temp->data = data; linknode_t * p = head; while(p->next!=NULL && data > p->next->data) { p = p->next; } temp->next = p->next; p->next = temp; } void printf_data_linklist(linknode_t * head) { linknode_t * p = head; while(p->next!=NULL) { printf("%d ",p->next->data); p = p->next; } printf("\n"); } void free_linklist(linknode_t * head) { if(head == NULL)return; linknode_t * p = head; linknode_t * temp = NULL; while(p->next!=NULL) { temp = p; p = p->next; free(temp); temp = NULL; } free(p); p = NULL; } main.c //main.c #include "linklist.h" int main() { linknode_t * head = NULL; head = create_empty_linklist(); datatype_t arr[] = {1,5,3,7,9}; for(int i = 0;i < sizeof(arr)/sizeof(arr[0]);i++) { insert_order_linklist(head,arr[i]); } printf_data_linklist(head); free_linklist(head); return 0; }

得分 100
学习任务

慕尼黑0001808 的学生作业:

//写出下列类型的判空,删除 #ifndef __LIST_H__ #define __LIST_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 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 // list.c #include "list.h" //创建空的顺序表 seqlist_t *create_empty_seqlist() { seqlist_t * l = (seqlist_t *)malloc(sizeof(seqlist_t)); if (NULL == l) { printf("malloc seqlist_t fail \n"); return NULL; } return l; } // 打印数据 void printf_data_seqlist(seqlist_t * l) { printf("id\tname\tage\n"); for(int i = 0;in;i++) { printf("%d\t%s\t%d\n",l->buf[i].id,l->buf[i].name,l->buf[i].age); } printf("\n"); } //判断顺序表是否为空 int is_empty_seqlist(seqlist_t *l) { return l->n==0?1:0; } //删除顺序表中指定的数据 int delete_data_seqlist(seqlist_t *l,datatype_t data) { int i = 0,j = 0; if(is_empty_seqlist(l)) { return -1; } for(;in;i++) { // 如果当前元素与要删除的元素不匹配,则保留它 if(!(strcmp(l->buf[i].name,data.name)==0&&l->buf[i].id==data.id&&l->buf[i].age==data.age)) { l->buf[j++] = l->buf[i]; } // 如果匹配(是要删除的元素),则跳过它,不增加j } // 检查是否删除了元素 if(i==j) { // 没有找到要删除的元素 return -2; } l->n = j; return 0; } // main.c #include "list.h" int main() { seqlist_t * l = create_empty_seqlist(); datatype_t data[10] = { {"Alice", 1001, 18}, {"Bob", 1002, 19}, {"Charlie", 1003, 20}, {"David", 1004, 21}, {"Eve", 1005, 19}, {"Frank", 1006, 22}, {"Grace", 1007, 20}, {"Helen", 1008, 23}, {"Ivy", 1009, 21}, {"Jack", 1010, 20} }; memcpy(l->buf,data,sizeof(data)); l->n = 10; printf("删除前:\n"); printf_data_seqlist(l); int result = delete_data_seqlist(l,data[1]); // 删除 Bob printf("删除结果: %d\n", result); printf("删除后:\n"); printf_data_seqlist(l); free(l); l = NULL; return 0; }

得分 100
学习任务

慕尼黑0001808 的学生作业:

#ifndef __LIST_H__ #define __LIST_H__ // list.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; seqlist_t *create_empty_seqlist(); int is_full_seqlist(seqlist_t *l); void insert_data_seqlist(seqlist_t *l,datatype_t data); void printf_data_seqlist(seqlist_t *l); #endif // list.c #include "list.h" //创建空的顺序表 seqlist_t *create_empty_seqlist() { seqlist_t * l = (seqlist_t *)malloc(sizeof(seqlist_t)); if (NULL == l) { printf("malloc seqlist_t fail \n"); return NULL; } return l; } // 判断顺序表是否已满 int is_full_seqlist(seqlist_t * l) { return l->n == MAX ? 1 : 0; } // 插入数据 void insert_data_seqlist(seqlist_t *l,datatype_t data) { l->buf[l->n] = data; l->n++; } void printf_data_seqlist(seqlist_t * l) { printf("id\tname\tage\n"); for(int i = 0;ibuf[i].id,l->buf[i].name,l->buf[i].age); } printf("\n"); } // main.c #include "list.h" int main() { seqlist_t * l = create_empty_seqlist(); datatype_t data; while(is_full_seqlist(l)==0) { printf("please %d data[name id age]:",MAX); scanf("%s%d%d",data.name,&data.id,&data.age); insert_data_seqlist(l,data); } printf_data_seqlist(l); free(l); l = NULL; return 0; }

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号