目录

    • 1、下面的代码为什么在ubuntu里编译没问题,但在啊哈c中编译就有问题
    • 2、指针的指针与数组的关系
    • 3、链表中的节点每k个一组翻转代码出现了错误
  • 4、什么时候需要传递二级指针?
  • 5、NC24 删除有序链表中重复的元素有点缺陷待补全,三个或以上的相同数。

1、下面的代码为什么在ubuntu里编译没问题,但在啊哈c中编译就有问题


#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct Test {int data;struct Test *next;
};void printLink(struct Test *head) {struct Test *point;point = head;while (point != NULL) {printf("%d ", point->data);point = point->next;}putchar('\n');
}struct Test *insertDynamicHead(struct Test *head) {struct Test *new;while (1) {new = (struct Test *)malloc(sizeof(struct Test));//寮€杈熺┖闂?     printf("input your new node data:\n");scanf("%d", &(new->data));if (new->data == 0) {printf("0 quit\n");return head;}if (head == NULL) {head = new;} else {new->next = head;head = new;}}return head;
}int main() {int i = 3;struct Test *head = NULL;head = insertDynamicHead(head);printLink(head);system("pause");return 0;
}

解答要加一句NULL的初始化

2、指针的指针与数组的关系

#include <stdio.h>
#include <stdlib.h>
int main()
{int **a;int i;// int b[3][2] = {{1,2},{3,4},{5,9}};a = (int **)malloc(sizeof(int *)*16);  //开辟**a的空间int aa[3];a[0]=(int*)calloc(3, sizeof(int));   //注意二维数组要给行也开辟空间// a[1]=(int*)calloc(3, sizeof(int));//printf("%d",*(a+1));for(i =0;i<2;i++){scanf("%d",&aa[i]);a[0][i] = aa[i];a[1][i] = aa[i];//printf("%d",a[0][i]);}for( i= 0;i<2;i++){printf("%d",a[1][i]);}/*int a = 10;int *b =&a;b =20;printf("%d",*b);*/system("pause");return 0;
}

3、链表中的节点每k个一组翻转代码出现了错误

#include <stdio.h>
#include <stdlib.h>
struct lod{int a;struct lod *next;struct lod *pot;};void *puts1(struct lod *head)
{struct lod * lode = head;struct lod * new;int a;while(1){new = (struct lod *)malloc(sizeof(struct lod));new->next  = NULL;printf("请给个输入值:并且以0结束\n");scanf("%d",&a);new->a = a;if(new->a == 0){break;}new->next =lode;lode =new;}return  lode;}void printf1(struct lod*p)
{while(p != NULL){printf("%d",p->a);p=p->next;}}void *fanzhuan(struct lod *head,int a) //链表的翻转
{struct lod *net=NULL;struct lod *len=NULL;struct lod *p=NULL;int i=0;while(head !=NULL)  //a为k个值的翻转头插法{// printf("/");if(i<a){len =head->next;head->next=net;net = head;head=len;i++;}else{break;}}p=net;while(net != NULL)  //打印net翻转后的前a个值的链表翻转{printf("%d",net->a);net=net->next;}//net =head;while(1)  //出现问题,想利用尾插法将后面的几个是原封不动的加入到链表的尾部但不行{printf("sadfsdfsa\n");if(head == NULL){break;}head=head->next;net->next =head;net=head;printf("*****%d",net->a);//net=net->next;// printf("sadfsdfsa");}//net->next =NULL;net =p;printf("++++++\n");while(net != NULL) //打印只有翻转的部分这是为什么{printf("%d",net->a);net=net->next;}//  printf("sadfsdfsa");return p;
}int main()
{struct lod *haod =NULL;int a=3;haod =puts1(haod);printf1(haod);printf("-------------------\n");haod = fanzhuan(haod,a);//printf1(haod);system("pause");return 0;
}

解决:主要是尾插法的原因吧

#include <stdio.h>
#include <stdlib.h>
struct lod{int a;struct lod *next;struct lod *pot;};void *puts1(struct lod *head)
{struct lod * lode = head;struct lod * new;int a;while(1){new = (struct lod *)malloc(sizeof(struct lod));new->next  = NULL;printf("请给个输入值:并且以0结束\n");scanf("%d",&a);new->a = a;if(new->a == 0){break;}new->next =lode;lode =new;}return  lode;}void printf1(struct lod*p)
{while(p != NULL){printf("%d",p->a);p=p->next;}}void *fanzhuan(struct lod *head,int a) //链表的翻转
{struct lod *net=NULL;struct lod *len=NULL;struct lod *p=NULL;struct lod *p1=NULL;int i=0;while(head !=NULL)  //a为k个值的翻转头插法{// printf("/");if(i<a){len =head->next;head->next=net;net = head;head=len;i++;}else{break;}}p=net;while(net->next != NULL)  //打印net翻转后的前a个值的链表翻转,解决想实现尾部插入要直接net->next 做判断{printf("%d",net->a);net=net->next;}// net->next =head;printf("/******%d******/",net->a);while(1)  {printf("sadfsdfsa\n");net->next =head;net=head;head=head->next;if(head == NULL){break;}printf("*****%d",net->a);//net=net->next;// printf("sadfsdfsa");}//net->next =NULL;net =p;printf("++++++\n");while(net != NULL) {printf("%d",net->a);net=net->next;}printf(".........................\n");while(p1 != NULL) {printf("%d",p1->a);p1=p1->next;}//  printf("sadfsdfsa");return p;
}int main()
{struct lod *haod =NULL;int a=3;haod =puts1(haod);printf1(haod);printf("-------------------\n");haod = fanzhuan(haod,a);//printf1(haod);system("pause");return 0;
}

4、什么时候需要传递二级指针?

答:https://www.cnblogs.com/AndyJee/p/4630153.html
这篇文章解释的非常的全

5、NC24 删除有序链表中重复的元素有点缺陷待补全,三个或以上的相同数。

#include <stdio.h>
#include <stdlib.h>
struct headop{int a;struct headop *next;};void *put(struct headop* net)
{net=(struct headop*)malloc(sizeof(struct headop));net->next=NULL;net->a=5;struct headop *a1;struct headop *beet=net;int i=1;while(1){a1= (struct headop*)malloc(128);printf("请输入第 %d 个数\n",i);i++;scanf("%d",&a1->a);if(a1->a==0){break;}beet->next=a1;beet =beet->next;printf("+++%d++\n",a1->a);// net=(struct headop*)malloc(sizeof(struct headop));//net->next=NULL;}beet->next=NULL;return net;}void *chazhao(struct headop *sin)
{struct headop* s=sin;struct headop* p=sin;struct deadop* a=sin;sin=sin->next;while(1){//sin=sin->next;if(s->a == sin->a){p->next=sin->next;s=sin->next;sin=sin->next->next;}else{s=s->next;sin=sin->next;p=p->next;}if(sin ==NULL){break;}}return a;
}int main()
{struct headop* head;// head=(struct headop*)malloc(sizeof(struct headop));struct headop* len;head=put(head);len=head;while(head != NULL){printf("%d-->",head->a);head=head->next;}printf("\n");len=chazhao(len);while(len != NULL){printf("%d-->",len->a);len=len->next;}printf("请输入链表");system("pause");return 0;
}

代码编写中的疑问与问题解法相关推荐

  1. 代码编写中会遇到的安全性问题

    一.常用的攻击手段 1.脚本注入 漏洞描述: 脚本注入攻击在通过浏览器使用用户输入框插入恶意标记或脚本代码时发生. 如:某个输入框允许用户向数据存储中插入内容,如果将一段js脚本插入其中,则当其他用户 ...

  2. MATLAB代码编写中自定义变量的问题

    1. 吃过亏,上过当 自己在进行数据处理的过程中,遇到过很多次自己编写的变量存在问题的情况,到目前为止,遇到过的情况如下: 情况 问题 详细描述 解决办法 1 自定义变量和程序中的函数名称相同 比如: ...

  3. Python代码编写中的性能优化点

    1. 交换赋值 ##不推荐 temp = a a = b b = a ##推荐 a, b = b, a # 先生成一个元组(tuple)对象,然后unpack 2. Unpacking ##不推荐 l ...

  4. 数字IC-1.9 吃透通信协议中状态机的代码编写套路

    目录 一.前言 二.例子预备知识 三.时序法WE命令代码举例 四.逻辑法BE命令代码举例 五.测试原代码文件 六.关于通用指令集状态机编写的思考与疑问 七.分块式命令框架设计小例(两法混用且验证六的问 ...

  5. 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法...

    错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...

  6. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    原文:VS开发中的代码编写小技巧--避免重复代码编写的几种方法 上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都 ...

  7. 数据库代码编写_如何将您的职业转变为数据科学-即使您今天不编写代码。

    数据库代码编写 by Sam Chow, PhD 由周星驰博士 如何将您的职业转变为数据科学-即使您今天不编写代码. (How to transition your career into Data ...

  8. 3.基于深度学习的轴承故障诊断--代码编写与运行

    该专栏将较为详细的介绍如何利用深度学习进行故障诊断方面的学术研究,主要以轴承为例,包括深度学习常用框架Tensorflow的搭建以及使用,并会记录完整搭建过程,并以卷积神经网络与循环神经网络为例进行代 ...

  9. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

最新文章

  1. P1066 2^k进制数 NOIP 2006 提高组 第四题
  2. linux文件删除指定内容,Linux bash删除文件中含“指定内容”的行功能示例
  3. python pip安装提示Consider using the `--user` option or check the permissions.
  4. C++二个数组求交集的实现算法(附完整源码)
  5. Shell-8--数值运算及处理
  6. 为什么说 Java 是按值传递的?
  7. [APIO/CTSC 2007]数据备份(贪心+堆)
  8. linux下的进程间通信-管道及共享内存
  9. 战斗民族的Yandex开始首次雪地无人车路测 | 视频
  10. Visitor模式学习
  11. Python安装geopandas库
  12. C语言之父丹尼斯·里奇
  13. 连接linux的共享文件夹,Linux连接共享文件夹
  14. 【转载】电信光猫中兴F451破解方法
  15. 通达OA与触点通RTC的集成插件
  16. linux samba 拒绝访问,Samba拒绝访问的解决方式
  17. 转~~前端轮播 简单实现 啵啵啵!!!
  18. Android的资源引用(2)(Drawable)
  19. RGB颜色对照表(全)
  20. 关于前端页面展示图片展示时改变方向的解决办法

热门文章

  1. VM安装VMTool工具
  2. 无线局域网简介 小白级别
  3. Flutter实践:深入探索 flutter 中的状态管理方式(1)
  4. 易语言和python融合_易语言和python融合|智联招聘怎么自动投递简历
  5. 数学三大核心领域概述:代数
  6. XENAPP 7.6 和 XENDESKTOP 7.6 初体验之四 创建桌面计算机目录
  7. clickhouse离线安装和卸载
  8. 国外电商网站snapdeal爬取流程
  9. WebGL实时视频(5) awrtc.js理解并修改
  10. java g1 详解_JAVA垃圾收集算法总结以及CMS、G1算法详解