亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業社區

探索學習新天地,共享知識資源!

0 提交作業
0 布置作業
0 滿分作業
得分 100
學習任務

cjozGV 的學生作業:

#include "stdio.h" #include "stdlib.h" #include "string.h" typedef int datatype_t; typedef struct linknode{ datatype_t data; //數據域 struct linknode *next; //節點域 } linknode_t; //1.創建一個新鏈表,為頭節點在棧區創建空間 linknode_t *create_list(int arr[],int n){ linknode_t *head = (linknode_t *)malloc(sizeof(linknode_t)); head->next = NULL; //初始時鏈表為空 linknode_t *tail = head; //尾指針初始指向頭節點 //2.遍歷數組,逐個插入節點 for (int i = 0; i < n; ++i) { //2.1創建新節點 linknode_t *new_node = (linknode_t *)malloc(sizeof(linknode_t)); new_node->data = arr[i]; //存儲數據 new_node->next = NULL; //新節點的next暫時為NUll //2.2將新節點鏈接到鏈表末尾 tail->next = new_node; //尾節點的next指向新節點 tail = new_node; //更新尾指針 } return head; } // 打印鏈表 void print_list(linknode_t *head){ linknode_t *p = head->next; //跳過頭節點 while (p != NULL){ printf("%d ",p->data); p = p->next; } printf("\n"); } // 逆序鏈表(反轉鏈表) void reverse_list(linknode_t *head){ if (head == NULL || head->next == NULL || head->next->next == NULL){ return; //空鏈表或只有一個節點,無需反轉 } linknode_t *prev = NULL; linknode_t *curr = head->next; //從第一個實際節點開始 linknode_t *next = NULL; while (curr != NULL){ next = curr->next; //保存下一個節點 curr->next = prev; //反轉指針 prev = curr; //prev前移 curr = next; //curr前移 } head->next = prev; //更新頭節點的next指向新的第一個節點 } void clear_list(linknode_t *head) { linknode_t *p = head; while (p != NULL) { linknode_t *temp = p; p = p->next; free(temp); // 釋放當前節點 } } int main() { int arr[] = {1, 5, 3, 7, 9}; int n = sizeof(arr) / sizeof(arr[0]); // 1. 創建鏈表并插入數據 linknode_t *head = create_list(arr, n); printf("原始鏈表: "); print_list(head); // 2. 逆序鏈表 reverse_list(head); printf("逆序后鏈表: "); print_list(head); // 3. 清除鏈表 clear_list(head); head = NULL; // 防止野指針 return 0; }

得分 100
學習任務

浪潮君 的學生作業:

#include #include // 定義二叉樹節點結構 typedef struct TreeNode { char data; struct TreeNode *left; struct TreeNode *right; } TreeNode; // 定義隊列節點結構 typedef struct QueueNode { TreeNode *treeNode; struct QueueNode *next; } QueueNode; // 定義鏈式隊列結構 typedef struct LinkQueue { QueueNode *front; QueueNode *rear; } LinkQueue; // 創建新的樹節點 TreeNode* createTreeNode(char data) { TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode)); node->data = data; node->left = NULL; node->right = NULL; return node; } // 創建空的鏈式隊列 LinkQueue* createEmptyLinkQueue() { LinkQueue *q = (LinkQueue*)malloc(sizeof(LinkQueue)); q->front = NULL; q->rear = NULL; return q; } // 判斷隊列是否為空 int isEmptyLinkQueue(LinkQueue *q) { return q->front == NULL; } // 入隊操作 void enterLinkQueue(LinkQueue *q, TreeNode *node) { QueueNode *newNode = (QueueNode*)malloc(sizeof(QueueNode)); newNode->treeNode = node; newNode->next = NULL; if (isEmptyLinkQueue(q)) { q->front = newNode; q->rear = newNode; } else { q->rear->next = newNode; q->rear = newNode; } } // 出隊操作 TreeNode* deleteLinkQueue(LinkQueue *q) { if (isEmptyLinkQueue(q)) { return NULL; } QueueNode *temp = q->front; TreeNode *node = temp->treeNode; q->front = q->front->next; if (q->front == NULL) { q->rear = NULL; } free(temp); return node; } // 層次遍歷函數 void levelOrderTraversal(TreeNode *root) { if (root == NULL) return; LinkQueue *q = createEmptyLinkQueue(); enterLinkQueue(q, root); while (!isEmptyLinkQueue(q)) { TreeNode *temp = deleteLinkQueue(q); printf("%c ", temp->data); if (temp->left != NULL) { enterLinkQueue(q, temp->left); } if (temp->right != NULL) { enterLinkQueue(q, temp->right); } } free(q); } // 主函數,構建二叉樹并調用層次遍歷 int main() { // 構建二叉樹 TreeNode *root = createTreeNode('A'); root->left = createTreeNode('B'); root->right = createTreeNode('C'); root->left->left = createTreeNode('D'); root->left->right = createTreeNode('E'); root->right->right = createTreeNode('F'); // 調用層次遍歷函數 levelOrderTraversal(root); printf("\n"); return 0; } 運行結果:A B C D E F

得分 100
討論題

cjozGV 的學生作業:

#include "stdio.h" #include "stdlib.h" #include "string.h" typedef int datatype_t; typedef struct linknode{ datatype_t data; //數據域 struct linknode *next; //節點域 }linknode_t; //1.創建一個新鏈表,為頭節點在棧區創建空間 linknode_t *create_empty_linklist(){ //1.為頭節點在堆區分配空間,用指針head保存 linknode_t *head = NULL; head = (linknode_t*)malloc(sizeof(linknode_t)); //2.頭節點的指針域為NULL if (NULL == head){ printf("malloc is fail!\n"); return NULL; } memset(head,0, sizeof(linknode_t)); return head; } //2.按從小到大的順序插入數據 void insert_order_linklist(linknode_t *head,datatype_t data){ //1.創建新節點 linknode_t *new_node = NULL; new_node = (linknode_t*)malloc(sizeof(linknode_t)); new_node->data = data; //1.設置新節點的數據 //2.找到插入的位置 linknode_t *p = head; //從鏈表的頭開始 while (p->next != NULL && p->next->data > data){ p = p->next; //向后移動指針,直到找到合適的插入位置 } //3.插入新節點 new_node->next = p->next; //新節點指向p的下一個節點 p->next = new_node; //p指向新節點 } // 打印鏈表中的數據(從大到?。?void printf_data_linklist(linknode_t *head) { linknode_t *p = head->next; // 跳過頭節點 printf("Linked List: "); while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); } //刪除鏈表中所有值為target的節點 void delete_all_target_nodes(linknode_t *head,datatype_t target){ linknode_t *p = head; //p指向當前節點的前一個節點 while (p->next != NULL){ if (p->next->data == target){ // 找到目標點刪除它 linknode_t *temp = p->next; //暫存目標節點 p->next = temp->next; //前驅節點跳過目標節點 free(temp); } else { p = p->next; //繼續遍歷 } } } //4.釋放鏈表占用的內存 void free_linklist(linknode_t *head) { linknode_t *p = head; // 從頭節點開始釋放 while (p != NULL) { linknode_t *temp = p; // 暫存當前節點 p = p->next; // 移動到下一個節點 free(temp); // 釋放當前節點 } } int main(){ //1.創建空鏈表 linknode_t *head = create_empty_linklist(); //2.準備要插入的數據 datatype_t data[] = {1, 5, 3, 7, 9, 5, 8, 5, 3}; int n = sizeof(data) / sizeof(data[0]); //3.有序插入數據 for (int i = 0; i < n; i++) { insert_order_linklist(head,data[i]); } //4.打印鏈表 printf_data_linklist(head); //5.刪除所有值為3的節點 delete_all_target_nodes(head,3); //6.再次打印 printf_data_linklist(head); //7.釋放鏈表內存 free_linklist(head); return 0; }

得分 100
學習任務

RX0_UNICORN 的學生作業:

#include #include #include #define MAX 10 struct student { char name[20]; int id; int score; int age; }; typedef struct student datatype_t; typedef struct { datatype_t stu[MAX]; // 定義數組記錄班級學?每個學?的信息 int n; // 學?實際到來的個數 }seqlist_t; seqlist_t *get_seqlist_t_addr() { seqlist_t *s_t = NULL; int s_t_size = (sizeof(char) * 20 + sizeof(int) * 3) * MAX + sizeof(int); s_t = (seqlist_t *)malloc(s_t_size); if(NULL == s_t) { printf("malloc is fail!\n"); return NULL; } memset(s_t, 0, s_t_size); return s_t; } void input_attendance_stu(seqlist_t *stp) { printf("please input attendance student data : "); scanf("%d", &(stp -> n)); } void input_student_data(seqlist_t *stp) { for(int i = 0; i < (stp -> n); i++) { printf("please input student data[NAME ID SCORE AGE] : "); scanf("%s%d%d%d", (*stp).stu[i].name, &((*stp).stu[i].id), &((*stp).stu[i].score), &((*stp).stu[i].age)); } } void output_student_data(seqlist_t *stp) { printf("NAME\tID\tSCORE\tAGE\n"); printf("--------------------------------------\n"); for(int i = 0; i < (stp -> n); i++) { printf("%s\t%d\t%d\t%d\n", (*stp).stu[i].name, (*stp).stu[i].id,(*stp).stu[i].score, (*stp).stu[i].age); printf("--------------------------------------\n"); } } int query_student_id(seqlist_t *s_t, const int id) { datatype_t st_id; for(int i = 0; i < (s_t -> n); i++) { if(id == (*s_t).stu[i].id) { st_id = (*s_t).stu[i]; } } if(id != st_id.id) { return 1; } printf("NAME\tID\tSCORE\tAGE\n"); printf("%s\t%d\t%d\t%d\n", st_id.name, st_id.id, st_id.score, st_id.age); return 0; } int main(int argc, const char *argv[]) { int query_id; // 表初始化 seqlist_t *s_t = get_seqlist_t_addr(); if(NULL == s_t) { printf("malloc is fail!\n"); return 1; } // 保存實到人數信息 input_attendance_stu(s_t); if(MAX < (s_t -> n)) { printf("Exceed the maximum limit : %d\n", MAX); free(s_t); s_t = NULL; return 1; } // 保存學生信息 input_student_data(s_t); printf("=====================================\n"); // 輸出保存的學生信息 output_student_data(s_t); printf("=====================================\n"); // 根據用戶輸入的學生 ID 查詢學生信息并打印 printf("please input query student ID : "); scanf("%d", &query_id); int ret = query_student_id(s_t, query_id); if(ret == 1) { printf("error : no student data\n"); free(s_t); s_t = NULL; return 1; } seqlist_t st = *s_t; printf("班級第一個學生 id的值 : \n"); printf("NAME\tID\tSCORE\tAGE\n"); printf("%s\t%d\t%d\t%d\n", st.stu[0].name, st.stu[0].id, st.stu[0].score, st.stu[0].age); free(s_t); s_t = NULL; return 0; } 【圖片】

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號