#include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct Node{ int data; struct Node *next;} Node;Node *insert(Node *head, int pos,int val){ Node new_head, *p = &new_head,*node = getNewNode(val); new_head.next = head; for(int i = 0; i < pos ; i++) p = p->next; node->next = p->next; p->next = node; return new_head.next;}Node *getNewNode(int val){ Node *p = (Node*)malloc(sizeof(Node)); p->data = val; p->next = NULL; return p;}void clear(Node *head){ if(head == NULL) return; for(Node *p = head,*q;p; p = q){ q = p->next; free(p); } return;}void output_linklist(Node *head){ int n = 0; for(Node *p = head;p;p = p->next) n +=1; for(int i = 0;i < n; i ++){ printf("%3d",i); printf(" "); } printf("\n"); for(Node *p = head; p; p = p->next){ printf("%3d",p->data); printf("->"); } printf("\n\n\n"); return;}int main(){ srand(time(0)); #define MAX_OP 20 Node *head = NULL; for(int i =0; i < MAX_OP; i++){ int pos = rand()%(i + 1), val = rand()%100; printf("insert %d at %d to linklist\n",val,pos); head = insert(head,pos,val); output_linklist(head); } return 0;}
这个回答算是对楼上问题评论区小伙伴的回答补充,在insert函数之前添加一个函数声明,或者将getNewNode函数的定义移到insert函数的前面就可以运行了。
比如说这样:
#include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct Node{ int data; struct Node *next;} Node;Node *getNewNode(int val){ Node *p = (Node*)malloc(sizeof(Node)); p->data = val; p->next = NULL; return p;}Node *insert(Node *head, int pos,int val){ Node new_head, *p = &new_head,*node = getNewNode(val); new_head.next = head; for(int i = 0; i < pos ; i++) p = p->next; node->next = p->next; p->next = node; return new_head.next;}void clear(Node *head){ if(head == NULL) return; for(Node *p = head,*q;p; p = q){ q = p->next; free(p); } return;}void output_linklist(Node *head){ int n = 0; for(Node *p = head;p;p = p->next) n +=1; for(int i = 0;i < n; i ++){ printf("%3d",i); printf(" "); } printf("\n"); for(Node *p = head; p; p = p->next){ printf("%3d",p->data); printf("->"); } printf("\n\n\n"); return;}int main(){ srand(time(0)); #define MAX_OP 20 Node *head = NULL; for(int i =0; i < MAX_OP; i++){ int pos = rand()%(i + 1), val = rand()%100; printf("insert %d at %d to linklist\n",val,pos); head = insert(head,pos,val); output_linklist(head); } return 0;}
问题内容: 我有一个简单的生成器功能 然后,我初始化生成器并尝试在控制台中打印值: 初次致电的论点去了哪里?有没有一种在生成器函数中利用它的方法? 这是Babel REPL ,您可以在其中看到该结果。 问题答案: 该方法定义如下: 25.3.1.2 Generator.prototype.next(value) 该方法执行以下步骤: 让 摹 是 这个 值。 返回GeneratorResume( g
问题内容: 场景 :考虑以下是节点Web应用程序的代码部分。 问题 :我正在检查公正或公正哪一个。上面的示例代码对两者的工作原理完全相同,并且在执行方面没有任何区别。 问题 : 有人 可以对此加以说明,何时使用和何时使用以及一些重要的区别吗? 问题答案: 有人总是写是为了确保执行在触发回调后停止。 如果您不这样做,则可能要冒第二次触发回调的风险,这通常会造成灾难性的后果。您的代码可以正常使用,但我
HarmonyOS Next运行cpp崩溃该怎么排查? 看日志是崩溃在主线程,而且没有我自己动态库的堆栈信息:
假设您有一个简单的代码块,如下所示: 这个函数有两个参数和,分别表示请求和响应对象。 另一方面,还有其他函数带有第三个参数,称为。例如,让我们看看下面的代码: 我不明白的意义是什么,也不明白为什么要使用它。在那个例子中,如果id不存在,实际上在做什么?
HarmonyOS Next升级到Preview2后Contacts Kit中枚举值和之前不一样是怎么回事? 自定义邮箱类型,CUSTOM_LABEL的值,从之前的10000改为0,这是怎么回事?
前端文件: /src/app/api/compress/route.ts 后端文件:src/app/api/upload/route.ts 报错内容: 麻烦各位熟悉Next的大佬看一下 问题代码的GitHub地址:https://github.com/AnsonZnl/next-upload