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

作业社区

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

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

童垚 的学生作业:

#include #include #include #include #include #include #include #define MSG_PATHANME “.” #define MSG_PRO_ID 100 #define MSG_TYPEA 100 #define MSG_TYPEB 200 #define MSIZE 100 struct msgbuf { long mtype; char mtext[MSIZE]; }; int main(void) { struct msgbuf msg; key_t key; int msgid, snd; key = ftok(MSG_PATHANME, MSG_PRO_ID); if (key == -1) { perror("key is fail."); exit(EXIT_FAILURE); } msgid = msgget(key, IPC_CREAT | 0644); if (msgid == -1) { perror("msgid is fail."); exit(EXIT_FAILURE); } pid_t fk; fk = fork(); if (fk == -1) { perror("fork create is fail."); exit(EXIT_FAILURE); } else if (fk == 0) { // printf("fork A\n"); ssize_t rbytes; while (1) { rbytes = msgrcv(msgid, (void *)&msg, MSIZE, MSG_TYPEA, 0); if (rbytes == -1) { perror("recv is fail."); exit(EXIT_FAILURE); } printf("mtype = %ld,mtext = %s \n", msg.mtype, msg.mtext); } } else if (fk > 0) { pid_t newfk = fork(); if (newfk == -1) { perror("B fork is fail\n"); exit(EXIT_FAILURE); } else if (newfk == 0) { // printf("the fork is B\n"); ssize_t rbytes; while (1) { rbytes = msgrcv(msgid, (void *)&msg, MSIZE, MSG_TYPEB, 0); if (rbytes == -1) { perror("recv is fail."); exit(EXIT_FAILURE); } printf("mtype = %ld,mtext = %s \n", msg.mtype, msg.mtext); } } else if (newfk > 0) { while (1) { scanf("%ld", &msg.mtype); scanf("%s", msg.mtext); if (strncmp(msg.mtext, "quit", 4) == 0) break; snd = msgsnd(msgid, (void *)&msg, strlen(msg.mtext) + 1, 0); if (snd == -1) { perror("snd is fail."); exit(EXIT_FAILURE); } } } } return 0; }

得分 100
讨论题

慕粉13021651709 的学生作业:

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_head_linklist(linknode_t *head,datatype_t data); extern void printf_data_linklist(linknode_t *head); extern void insert_tail_linklist(linknode_t *head,datatype_t data); extern void insert_order_linklist(linknode_t *head,datatype_t data); extern void insert_ordertwo_linklist(linknode_t *head,datatype_t data); #endif 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 is fail!\n"); return NULL; } memset(head,0,sizeof(linknode_t)); // 也可以这样写代码 // head->next= NULL; // head->data = 0; return head; } // 2头插发:每次都在头节点后插入数据 // 特点:插入的顺序和输出的顺序相反的。 void insert_head_linklist(linknode_t *head,datatype_t data) { //2.1为节点在堆区申请空间 linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("malloc is fail!\n"); return; } // 2.2 插入数据 temp->data = data; // 2.3连接节点 temp->next = head->next; head->next = temp; return; } // 尾插发每次都在尾节点后插入数据 void insert_tail_linklist(linknode_t *head,datatype_t data) { //2.1为节点在堆区申请空间 linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("malloc is fail!\n"); return; } // 2.2 插入数据 temp->data = data; // 找到尾节点 linknode_t * p = head; //保存首地址 while(p->next!=NULL) { p = p->next; } // 2.3连接节点 temp->next = p->next; p->next = temp; return; } // 顺序排列 void insert_order_linklist(linknode_t *head,datatype_t data) { //2.1为节点在堆区申请空间 linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("malloc is fail!\n"); return; } // 2.2 插入数据 temp->data = data; // 找到尾节点 linknode_t * p = head; //保存首地址 // 2.3 P指针向后便利 while(p->next!=NULL && data >p->next->data) { p = p->next; } //在p节点后插入temp节点 temp->next = p->next; p->next = temp; return; } // 顺序插入2 void insert_ordertwo_linklist(linknode_t *head,datatype_t data) { //2.1为节点在堆区申请空间 linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("malloc is fail!\n"); return; } // 2.2 插入数据 temp->data = data; // 找到尾节点 linknode_t * p = head; //保存首地址 // 2.3 P指针向后便利 while(p->next!=NULL && data < p->next->data) { p = p->next; } //在p节点后插入temp节点 temp->next = p->next; p->next = temp; return; } // 输出链表中的内容 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"); return; } main.c #include "linklist.h" int main() { linknode_t *head = NULL; datatype_t data; int n=0,i=0; head = create_empty_linklist(); printf("please input you want insert data number :"); scanf("%d",&n); printf("please input %d data:",n); for(i=0;i

微信客服

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

帮助反馈 APP下载

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

公众号

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