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

作业社区

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

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

学无止境呀呀呀 的学生作业:

#include #include #include #include #include #define MAX_LINE 256 #define MAX_ARGS 8 //把一行输入按空格/制表符拆分成参数数组 static int parse_line(char *line,char *argv[],int max_args) { int argc = 0; //第一次取token char *tok = strtok(line," \t"); while (tok && argc < max_args -1) { argv[argc++] = tok; // 继续取下一个token tok = strtok(NULL," \t"); } // 参数数据最后必须是 NULL argv[argc] = NULL; return argc; } //支持ls[选项][目录] static void exec_ls(int argc,char *argv[]) { if(argc == 1) { execl("/bin/ls","ls",(char *)NULL); } else if (argc == 2) { execl("/bin/ls","ls",argv[1],(char *)NULL); } else if (argc == 3) { execl("/bin/ls","ls",argv[1],argv[2],(char *)NULL); } else { fprintf(stderr,"ls: too many args\n"); _exit(1); } } int main(void) { char line[MAX_LINE]; char *argv[MAX_ARGS]; while(1) { //打印提示符 printf("mini> "); fflush(stdout); // 读一行用户输入 if(!fgets(line,sizeof(line),stdin)) { break; } //去掉末尾换行 line[strcspn(line,"\n")] = '\0'; if(line[0] == '\0') { continue; // 空行直接跳过 } // 拆分命令行 int argc = parse_line(line,argv,MAX_ARGS); if(argc == 0) { continue; } // 内建命令:退出 if(strcmp(argv[0],"exit") == 0) { break; } // 创建子进程 pid_t pid = fork(); if(pid < 0) { perror("fork"); continue; } else if (pid ==0) { //子进程 根据命令选择 excel if(strcmp(argv[0],"pwd") == 0) { execl("/bin/pwd","pwd",(char *)NULL); } else if (strcmp(argv[0],"ls") == 0) { exec_ls(argc,argv); } else { fprintf(stderr,"unknown command: %s\n",argv[0]); _exit(1); } // 失败 perror("excel"); _exit(1); } else { //父进程 等待子进程结束 int status = 0; waitpid(pid,&status,0); } } return 0; }

得分 100
讨论题

2030482 的学生作业:

looplist.h #ifndef __LOOPLIST_H__ #define __LOOPLIST_H__ #include #include #include typedef int data_type_t; typedef struct node { data_type_t dataType; struct node * next; } loop_list; extern loop_list * create_loop_list(); extern void insert_loop_list(loop_list *header, data_type_t dataType); extern void print_loop_list(loop_list *header); extern void josephu_loop_list(loop_list *header,int k,int m,int n); #endif looplist.c #include "looplist.h" loop_list *create_loop_list() { loop_list *header = (loop_list *) malloc(sizeof(loop_list)); if (NULL == header) { printf("create_loop_list malloc fail!"); return NULL; } memset(header, 0, sizeof(loop_list)); header->next = header; return header; } void print_loop_list(loop_list *header) { loop_list *p = header; while (p->next != header) { p = p->next; printf("%d ", p->dataType); } printf("\n"); } void josephu_loop_list(loop_list *header, int k, int m, int n) { loop_list *current = header; loop_list *pre = NULL; int delete_count = 0; int loop_count = 0; int start_flag = 0; while (delete_count != n) { // 需要被删除的结点的上一个结点 pre = current; current = current->next; //开始统计 if (start_flag == 0 && current->dataType == k) { start_flag = 1; loop_count = 0; } // header以及未开始计数,不处理 if (start_flag == 0 || current->dataType == 0) { continue; } if (loop_count == m - 1) { //current就是需要被删除的结点 pre->next = current->next; printf("delete->dataType = %d \n", current->dataType); free(current); current = NULL; current = pre; loop_count = 0; delete_count++; } else { loop_count += 1; } } } void insert_loop_list(loop_list *header, data_type_t dataType) { loop_list *item = (loop_list *) malloc(sizeof(loop_list)); if (NULL == item) { printf("insert_loop_list malloc fail!"); return; } item->dataType = dataType; item->next = NULL; loop_list *p = header; while (p->next != header) { p = p->next; } item->next = p->next; p->next = item; } main.c #include "looplist.h" int main() { int n = 8, k = 3, m = 4; loop_list *header = create_loop_list(); for (int i = 1; i

得分 100
学习任务

2030482 的学生作业:

linklist.h #ifndef TEST_LINKLIST_H #define TEST_LINKLIST_H #include #include #include typedef int data_type_t; typedef struct node { data_type_t dataType; struct node * next; } link_list; extern link_list * create_link_list(); extern void insert_link_list(link_list *header, data_type_t dataType); extern void order_insert_link_list(link_list *header,data_type_t dataType); extern int delete_link_list(link_list *header,data_type_t dataType); extern void print_link_list(link_list *header); extern void reverse_data_linklist(link_list *header); extern void clean_up_linklist(link_list *header); #endif linklist.c #include "linklist.h" link_list *create_link_list() { link_list *p = (link_list *) malloc(sizeof(link_list)); if (NULL == p) { printf("malloc link_list fail"); return NULL; } memset(p, 0, sizeof(link_list)); p->next = NULL; return p; } void insert_link_list(link_list *header, data_type_t dataType) { link_list *item = (link_list *) malloc(sizeof(link_list)); if (NULL == item) { printf("insert_link_list malloc fail!!"); return; } item->next = NULL; item->dataType = dataType; link_list *p = header; while (p->next != NULL) { p = p->next; } p->next = item; } void order_insert_link_list(link_list *header, data_type_t dataType) { link_list *item = (link_list *) malloc(sizeof(link_list)); if (NULL == item) { printf("order_insert_link_list malloc fail!!"); return; } item->dataType = dataType; item->next = NULL; link_list *p = header; while (p->next != NULL && dataType < p->next->dataType) { p = p->next; } item->next = p->next; p->next = item; } int delete_link_list(link_list *header,data_type_t dataType){ link_list *p = header; link_list * delete_p; int flag = 0; while (p->next != NULL) { if (p->next->dataType == dataType) { //待删除的结点 delete_p = p->next; p->next = delete_p->next; free(delete_p); delete_p = NULL; flag = 1; } else{ p = p->next; } } return flag; } void print_link_list(link_list *header) { link_list *p = header; while (p->next!=NULL) { printf("%d ", p->next->dataType); p = p->next; } printf("\n"); } void reverse_data_linklist(link_list *header){ link_list *p ; link_list *q; //把第一个有效结点和后面的断开,并且把第一个有效结点的next置为NULL p = header->next->next; header->next->next = NULL; while (p != NULL) { q = p->next; // p->next=header->next; header->next=p; p=q; } } void clean_up_linklist(link_list *header){ link_list *p = header; link_list *q; while (p != NULL) { q = p->next; print_link_list(p); free(p); p =q; } } main.c #include "linklist.h" int main() { link_list *pNode = create_link_list(); int data[] = {1,5,3,7,9}; int len = sizeof(data) / sizeof(data[0]); for (int i = 0; i

微信客服

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

帮助反馈 APP下载

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

公众号

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