C语言中It stop with signal SIGSEGV ,segmentation fault.

题目:

我的代码:

#include

#include

typedef struct LNode{

int data;

struct LNode *next;

}LNode,*LinkList;

LinkList create(LinkList L,int n);

LinkList reverse(LinkList L);

LinkList Add(LinkList P,LinkList Q);

int main()

{

LinkList P=NULL,Q=NULL,R=NULL;

Q=create(Q,3);

P=create(P,4);

R=Add(P,Q);

while(R){

printf("%d ",R->data);

R=R->next;

}

printf("\n");

return 0;

}

LinkList create(LinkList L,int n){//尾插法建立长度为n的链表L

LinkList r,tail=NULL;

int i;

printf("请输入链表数据%c:",(n==3?'Q':'P'));

for(i=0;i

r=(LinkList)malloc(sizeof(LNode));

scanf("%d",&r->data);

r->next=NULL;

if(!L){

L=r;

tail=r;

}

else{

tail->next=r;

tail=r;

}

}

}

LinkList reverse(LinkList L){//链表逆置函数

LinkList p,q,r;

p=L;

q=NULL;

while(p){

r=p;

p=p->next;

r->next=q;

q=r;

}

L=q;

return L;

}

LinkList Add(LinkList P,LinkList Q){

LinkList m,n,r,head=NULL;//头插法建立目标链表

int carry=0;

if(!P)return Q;

if(!Q)return P;

m=reverse(P);

n=reverse(Q);

while(m&&n){

r=(LinkList)malloc(sizeof(LNode));

r->data=m->data+n->data+carry;

carry=r->data/8;

r->data%=8;

r->next=head;

head=r;

m=m->next;

n=n->next;

}

if(!m){//修改指针,便于统一计算

m=n;

}

while(m){

r=(LinkList)malloc(sizeof(LNode));

r->data=m->data+carry;

carry=r->data/8;

r->data%=8;

r->next=head;

head=r;

m=m->next;

}

if(carry>0){

r=(LinkList)malloc(sizeof(LNode));

r->data=carry;

r->next=head;

head=r;

}

return head;

}

在调试运行时有这样的错误提示:

指向代码行:

麻烦诸位前辈看看,该如何修改?先行拜谢~

------解决思路----------------------

仅供参考://带表头结点的单向链表

#include

#include

#include

#include

struct NODE {

int          data;

struct NODE *next;

} H,*head,*p,*q,*s1,*s2,*s3,*s4,*s;

int i,j,k,n,t,m;

int main() {

srand(time(NULL));

//填写头节点数据

H.data=-1;

H.next=NULL;

head=&H;

//创建10个节点的单链表

p=head;

for (i=0;i<10;i++) {

q=(struct NODE *)malloc(sizeof(struct NODE));

if (NULL==q) return 1;

q->data=rand()%100;//填写0..99的随机值

q->next=NULL;

p->next=q;

p=q;

}

//输出整个单链表

s=head->next;

while (1) {

if (NULL==s) {

printf("\n");

break;

}

printf("%02d->",s->data);

s=s->next;

}

//将值为5的结点插入到单链表的第k个结点前

k=3;

n=0;

p=head;

while (1) {

if (NULL==p) {

break;

}

n++;

if (k==n) {

q=(struct NODE *)malloc(sizeof(struct NODE));

if (NULL==q) return 1;

q->data=5;

q->next=p->next;

p->next=q;

break;

}

p=p->next;

}

//输出整个单链表

s=head->next;

while (1) {

if (NULL==s) {

printf("\n");

break;

}

printf("%02d->",s->data);

s=s->next;

}

//删除第k个节点

k=5;

n=0;

p=head;

while (1) {

if (NULL==p) {

break;

}

n++;

if (k==n) {

q=p->next;

if (q) {

p->next=q->next;

free(q);

}

break;

}

p=p->next;

}

//输出整个单链表

s=head->next;

while (1) {

if (NULL==s) {

printf("\n");

break;

}

printf("%02d->",s->data);

s=s->next;

}

//从小到大排序

for (p=head;p!=NULL && p->next!=NULL;p=p->next) {

for (q=p->next;q!=NULL && q->next!=NULL;q=q->next) {

if (p->next->data > q->next->data) {

//交换data

//              printf("swap %02d %02d\n",p->next->data,q->next->data);

//              t=p->next->data;p->next->data=q->next->data;q->next->data=t;

//或者

//交换next

//              printf("swap %02d %02d\n",p->next->data,q->next->data);

s1=p->next;

s2=p->next->next;

s3=q->next;

s4=q->next->next;

if (s2!=s3) {

p->next=s3;

s3->next=s2;

q->next=s1;

s1->next=s4;

} else {

p->next=s3;

s3->next=s1;

q=s3;

s1->next=s4;

}

//输出整个单链表

//              s=head->next;

//              while (1) {

//                  if (NULL==s) {

//                      printf("\n");

//                      break;

//                  }

//                  printf("%02d->",s->data);

//                  s=s->next;

//              }

//              getchar();

}

}

}

//输出整个单链表

s=head->next;

while (1) {

if (NULL==s) {

printf("\n");

break;

}

printf("%02d->",s->data);

s=s->next;

}

//将单链表中前 m 个结点和后 n 个结点进行互换,m+n为链表总长10

m=4;

n=6;

k=0;

p=head;

while (1) {

if (NULL==p) {

break;

}

k++;

if (m+1==k) {

q=p;

}

s=p;

p=p->next;

}

s1=head->next;

head->next=q->next;

s->next=s1;

q->next=NULL;

//输出整个单链表

s=head->next;

while (1) {

if (NULL==s) {

printf("\n");

break;

}

printf("%02d->",s->data);

s=s->next;

}

//释放所有节点

p=head->next;

while (1) {

if (NULL==p) {

break;

}

q=p->next;

free(p);

p=q;

}

return 0;

}

//18->94->58->17->27->20->43->57->75->78->

//18->94->05->58->17->27->20->43->57->75->78->

//18->94->05->58->27->20->43->57->75->78->

//05->18->20->27->43->57->58->75->78->94->

//43->57->58->75->78->94->05->18->20->27->

//

C语言中用stop,C语言中It stop with signal SIGSEGV ,segmentation fault.解决方法相关推荐

  1. c语言中1B是多少,C语言1、C语言中,运算对象必须是整型的运算符是【】A./B-查字典问答网...

    C语言1.C语言中,运算对象必须是整型的运算符是[]A./B.%C.++D. 2.下列标识符中,不合法的是[] A.x2B.sizeofC._123D.char2 5.设d是double型变量,若要从 ...

  2. c语言putchar函数_C语言中的putchar()函数与示例

    c语言putchar函数 C语言中的putchar()函数 (putchar() function in C) The putchar() function is defined in the < ...

  3. Python之pip:Python语言中的pip的简介、安装、使用方法之详细攻略

    Python之pip:Python语言中的pip的简介.入门.使用方法之详细攻略 目录 pip的简介 pip的安装 1.Linux之Ubuntu系统安装pip3 pip的使用方法 1.pip命令集合 ...

  4. R语言读取出现 列的数目比列的名字要多的解决方法

    R语言读取出现 列的数目比列的名字要多的解决方法 参考文章: (1)R语言读取出现 列的数目比列的名字要多的解决方法 (2)https://www.cnblogs.com/cyh1989/p/9112 ...

  5. 万象物语找回服务器,万象物语网络连接线异常怎么办 登录不上游戏解决方法...

    万象物语游戏有时候会出现网络连接异常,玩家们无法登陆游戏喔,很多玩家可能不知道万象物语网络连接线异常怎么办.登录不上游戏有什么解决方法呢,跑跑车手游网为您带来了介绍. *万象物语网络连接线异常怎么办? ...

  6. php语言中$意思,PHP语言中的lt;gt;符号是什么意思?

    运算符的种类c语言的运算符可分为以下几类: 1.算术运算符用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(或称模运算,%).自增(++).自减(–)共七种. 2.关系运算符用于比较 ...

  7. c语言 地址+1,C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?...

    在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Mat ...

  8. C语言程序设计double,C语言中double类型数据占字节数为

    1以下选项中,能用作数据常量的是________. A.o115 B.0118 C.115L D.1.5e1.5 2下列叙述中错误的是_______. A.一个C语言程序只能实现一种算法 B.一个C函 ...

  9. c语言教程 define,C语言中define的用法

    预处理命令以"#"号开头,如包含命令#include,宏定义命令#define等.一般都放在源文件的前面,它们称为预处理部分. 所谓预处理是指在进行编译之前所作的工作.预处理是C语 ...

最新文章

  1. 何恺明一作论文 MAE 已有人复现!PyTorch 版!(附链接)
  2. AMD64,linux-64bit,ARM64,linux-Aarch64和windows 64bit
  3. 女司机撞上劳斯莱斯不用赔,多亏她车牌上的一个字救了她
  4. pbl和sbl_综合运用PBL和SBL教学法提高眼科带教质量的探索
  5. IDEA 一直不停的scanning files to index解决办法
  6. Swift傻傻分不清楚系列(三)元组与可选类型
  7. python作用域链_具有动态特性的Python嵌套作用域
  8. php mysql 开发微博_php+mysql基于Android的手机微博应用开发
  9. 计算机概论在线阅读,计算器概论 or 计算机概论
  10. 「开发小技巧」07—如何使用HTML和CSS创建图像叠加图标?
  11. python实践项目(七)
  12. Shell脚本监控LVS后台服务器存活状态
  13. 《构建之法》1-5章读后感
  14. [ZZ] GTX760首测
  15. 见过仙女蹦迪吗?一起用python做个小仙女代码蹦迪视频
  16. 怎么修改PDF文件内容
  17. jsmind 线条_使用jsMind显示思维导图
  18. JavaScript-常见数组内置方法
  19. 3GPP TS 23501-g51 中英文对照 | 4.4.5 Application Triggering Services
  20. 云班课计算机题答案,云班课答案获取

热门文章

  1. 7135制作自动量程电压切换_运用单片机制作四位半数字电压表
  2. 楼主已经复活,博客恢复更新
  3. 捕获PC微信支付消息的基本原理
  4. android 游戏sdk 浮标,华为游戏浮标不显示或显示异常
  5. 捍宇医疗在港上市状态“失效”:此前已通过聆讯,预计将继续亏损
  6. 外汇交易平台怎么选择?
  7. 桶装水行业的信息化-思考(一)
  8. 磁盘存储和文件管理----分区,文件系统 lsblk,blkid,findfs,parted,partprobe,partx,mkfs,mke2fs,uuidgen,locate
  9. 百度地图api搜索地址定位
  10. 【考研计算机网络】课堂笔记4 第四章 网络层_Network Layer