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

作业社区

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

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

慕尼黑0001808 的学生作业:

有个字符串为char b[ ] = “ADDCDCCBCDDBDDD”用上述方法,对此字符串进行编码和解码。 共有15个字符,占15byte; 统计每个字符占用的数量 A:1 B:2 C:4 D:8 把结点按照权值两两合并,小的放左边,大的放右边,形成huffman树 :15 :7 D:8 :3 C:4 A:1 B:2 对上图数据进行左0,右1的编码活动。 A:000 B:001 C:01 D:1 ADDCDCCBCDDBDDD对应的编码是 A DD C D C C B C D D B D D D 000 1 1 01 1 01 01 001 01 1 1 001 1 1 1 0001101101010010111001111 (25位/8 = 4bype) 对编码0001101101010010111001111进行解码 第一次,0,0有子树,往下走,00,有子树,往下走,000,无子树,是叶子树,存储着A。剩下编码1101101010010111001111 第二次,1,无子树,是叶子树,存储着D。剩下编码101101010010111001111 第三次,1,无子树,是叶子树,存储着D。剩下编码01101010010111001111 第四次,0,0有子树,往下走,01,无子树,是叶子树,存储着C。剩下编码101010010111001111 第五次,1,无子树,是叶子树,存储着D。剩下编码01010010111001111 第六次,0,0有子树,往下走,01,无子树,是叶子树,存储着C。剩下编码010010111001111 第七次,0,0有子树,往下走,01,无子树,是叶子树,存储着C。剩下编码0010111001111 第八次,0,0有子树,往下走,00,有子树,往下走,001,无子树,是叶子树,存储着B。剩下编码0111001111 第九次,0,0有子树,往下走,01,无子树,是叶子树,存储着C。剩下编码11001111 第十次,1,无子树,是叶子树,存储着D。剩下编码1001111 第十一次,1,无子树,是叶子树,存储着D。剩下编码001111 第十二次,0,0有子树,往下走,00,有子树,往下走,001,无子树,是叶子树,存储着B。剩下编码111 第十三次,1,无子树,是叶子树,存储着D。剩下编码11 第十四次,1,无子树,是叶子树,存储着D。剩下编码1 第十五次,1,无子树,是叶子树,存储着D。剩下编码无 解码后的数据位:ADDCDCCBCDDBDDD

得分 100
学习任务

慕尼黑0001808 的学生作业:

// bittree.h #ifndef __BITTREE_H__ #define __BITTREE_H__ #define N 6 #include #include #include #include typedef char data_t; //树节点结构体 typedef struct bitree { int n;//保存编码 data_t data;//保存字符 struct bitree * lchild;//保存左孩子 struct bitree * rchild;//保存右孩子 }bitree_t; // 队列结构体 typedef struct Queue{ bitree_t **data; int front; int real; int size; int capacity; }LinkQueue; // 二叉树的递归创建 extern bitree_t * create_binatry_tree(int n); // 创建空队列 extern LinkQueue * creat_empyt_linkqueue(); // 加入队列 extern void enter_linkqueue(LinkQueue * q,bitree_t * value); // 弹出队列 extern bitree_t * delte_linkqueu(LinkQueue * q); // 判断队列是否为空 extern bool is_emtpy_linkqueue(LinkQueue * q); #endif // bintree.c #include "bittree.h" bitree_t * create_binatry_tree(int n) { bitree_t * root = NULL; root = (bitree_t *)malloc(sizeof(bitree_t)); if(NULL == root) { printf("malloc root fail\n"); exit(EXIT_FAILURE); } memset(root,0,sizeof(bitree_t)); root->n = n; root->lchild = root->rchild = NULL; printf("input %d node data:",n); scanf("%c",&root->data); while(getchar()!='\n');//清除缓冲区 if(2 * n lchild = create_binatry_tree(2 * n); } if(2 * n + 1 rchild = create_binatry_tree(2 * n + 1); } return root; } LinkQueue * creat_empyt_linkqueue() { LinkQueue * q = NULL; q = (LinkQueue *)malloc(sizeof(LinkQueue)); if(NULL == q) { printf("malloc Queue fail\n"); exit(EXIT_FAILURE); } q->capacity = N; q->front = q->real = q->size = 0; q->data = (bitree_t **)malloc(sizeof(bitree_t*)*N); if(NULL == q->data) { printf("malloc q->data fail\n"); exit(EXIT_FAILURE); } return q; } void enter_linkqueue(LinkQueue * q,bitree_t * value) { if(q->size capacity) { q->data[q->real] = value; q->real = (q->real + 1) % q->capacity; q->size++; } } bitree_t * delte_linkqueu(LinkQueue * q) { bitree_t * value; if(q->size > 0) { value = q->data[q->front]; q->front = (q->front + 1)%q->capacity; q->size--; } return value; } bool is_emtpy_linkqueue(LinkQueue * q) { return q->size == 0; } // main.c #include "bittree.h" int main() { bitree_t * root = NULL; bitree_t * temp = NULL; root = create_binatry_tree(1); LinkQueue *q = creat_empyt_linkqueue(); enter_linkqueue(q,root); while(!is_emtpy_linkqueue(q)) { temp = delte_linkqueu(q); printf("%c",temp->data); if(temp->lchild != NULL) { enter_linkqueue(q,temp->lchild); } if(temp->rchild != NULL) { enter_linkqueue(q,temp->rchild); } } printf("\n"); return 0; } 运行结果 linux@linux-VMware-Virtual-Platform:~/study/homework/5-1-12/bintree$ gcc *.c linux@linux-VMware-Virtual-Platform:~/study/homework/5-1-12/bintree$ ./a.out input 1 node data:A input 2 node data:B input 4 node data:D input 5 node data:E input 3 node data:C input 6 node data:F ABCDEF linux@linux-VMware-Virtual-Platform:~/study/homework/5-1-12/bintree$

得分 100
学习任务

weixin_慕九州3042664 的学生作业:

#include #include #include #include #include #include #include #include #define PATH “.” #define MAGIC 0xDEAD #define SEM_SIZE 2 int main(int argc, char *argv[]) { if(argc != 2) { fprintf(stderr, “Usage: [%s] \n”, argv[0]); exit(EXIT_FAILURE); } key_t key = ftok(PATH, MAGIC); if(key == -1) { perror(“ftok()”); exit(EXIT_FAILURE); } int semid = semget(key, SEM_SIZE, IPC_CREAT | 0644); if(semid == -1) { perror("semget()"); exit(EXIT_FAILURE); } // sem[0]: child can write // sem[1]: parent can write '\n'. unsigned short values[SEM_SIZE] = {0, 0}; int ret = semctl(semid, SEM_SIZE, SETALL, values); if(-1 == ret) { perror("semctl():"); exit(EXIT_FAILURE); } FILE *fp = fopen(argv[1], "a+"); if(NULL == fp) { perror("fopen():"); exit(EXIT_FAILURE); } int pid = fork(); if(pid == -1) { perror("fork():"); exit(EXIT_FAILURE); } else if(pid == 0) { struct sembuf wait_p = { .sem_num = 0, .sem_op = -1, .sem_flg = 0 }; struct sembuf signal_p = { .sem_num = 1, .sem_op = +1, .sem_flg = 0 }; for(int i = 0; i < 10; i++) { semop(semid, &wait_p, 1); time_t curtime; time(&curtime); struct tm *tm_now = localtime(&curtime); char buf[40] = ""; strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tm_now); fwrite(buf, 1, strlen(buf), fp); fflush(fp); semop(semid, &signal_p, 1); } fclose(fp); exit(0); } else if(pid > 0) { struct sembuf wait_c = { .sem_num = 1, .sem_op = -1, .sem_flg = 0 }; struct sembuf signal_c = { .sem_num = 0, .sem_op = +1, .sem_flg = 0 }; for(int i = 1; i

微信客服

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

帮助反馈 APP下载

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

公众号

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