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. AHK 中循环的基本用法
  2. 409 Longest Palindrome
  3. 数据仓库与ODS的区别
  4. ubuntu18.04安装nextcloud以及相关配置
  5. 2020.5.27 线性规划测试(Lingo实现)
  6. 数据结构—链表-循环链表
  7. 「SF图片上传不清晰」解决方案
  8. UVA10189 Minesweeper【Ad Hoc】
  9. 辨异 —— 中文词汇
  10. 批处理文件中获取当前所在路径的几种方法
  11. 无限路由器故障排查细则
  12. Introduction to Computer Networking学习笔记(九):error detection 错误探查 Checksum、CRC、MAC
  13. Cool Edit Pro软件介绍
  14. 小米手机Android怎么截屏,小米手机怎么截屏 5种截屏方法分享
  15. mac换硬盘重装系统记录
  16. java邮件发送不成功,javamail发送邮件成功 但是却接收不到邮件?解决方法
  17. mysql设置校对规则_MySQL校对规则
  18. Qt获取当前控件所在窗口的位置(坐标)
  19. Linux fsck命令详解
  20. liunx 查看oracle监听,Linux配置Oracle监听提示异常

热门文章

  1. Tortoisesvn从SVN检出、导出和上传文件
  2. 中南大学2020计算机研究生报录比,近2.2万人报考,中南大学2020考研报录比数据统计,最高33:1...
  3. 格杀勿论无法连接计算机,弱电工程双绞线使用注意点及常见问题汇总
  4. FMS2015:Memblaze现场演示单机310万IOPS高性能解决方案
  5. SMI慧荣主控U盘量产后恢复教程
  6. Centos7.5使用本地iso文件创建本地源,实现安装源中已经打包存在的软件
  7. html+css 实现导航栏二级菜单——气泡框
  8. pc端适配移动端之背景颜色和背景图片
  9. 修改游戏服务器中的数据,修改游戏服务器中的数据库
  10. 前端进阶:跟着开源项目学习插件化架构