C语言中用stop,C语言中It stop with signal SIGSEGV ,segmentation fault.解决方法
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.解决方法相关推荐
- c语言中1B是多少,C语言1、C语言中,运算对象必须是整型的运算符是【】A./B-查字典问答网...
C语言1.C语言中,运算对象必须是整型的运算符是[]A./B.%C.++D. 2.下列标识符中,不合法的是[] A.x2B.sizeofC._123D.char2 5.设d是double型变量,若要从 ...
- c语言putchar函数_C语言中的putchar()函数与示例
c语言putchar函数 C语言中的putchar()函数 (putchar() function in C) The putchar() function is defined in the < ...
- Python之pip:Python语言中的pip的简介、安装、使用方法之详细攻略
Python之pip:Python语言中的pip的简介.入门.使用方法之详细攻略 目录 pip的简介 pip的安装 1.Linux之Ubuntu系统安装pip3 pip的使用方法 1.pip命令集合 ...
- R语言读取出现 列的数目比列的名字要多的解决方法
R语言读取出现 列的数目比列的名字要多的解决方法 参考文章: (1)R语言读取出现 列的数目比列的名字要多的解决方法 (2)https://www.cnblogs.com/cyh1989/p/9112 ...
- 万象物语找回服务器,万象物语网络连接线异常怎么办 登录不上游戏解决方法...
万象物语游戏有时候会出现网络连接异常,玩家们无法登陆游戏喔,很多玩家可能不知道万象物语网络连接线异常怎么办.登录不上游戏有什么解决方法呢,跑跑车手游网为您带来了介绍. *万象物语网络连接线异常怎么办? ...
- php语言中$意思,PHP语言中的lt;gt;符号是什么意思?
运算符的种类c语言的运算符可分为以下几类: 1.算术运算符用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(或称模运算,%).自增(++).自减(–)共七种. 2.关系运算符用于比较 ...
- c语言 地址+1,C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?...
在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Mat ...
- C语言程序设计double,C语言中double类型数据占字节数为
1以下选项中,能用作数据常量的是________. A.o115 B.0118 C.115L D.1.5e1.5 2下列叙述中错误的是_______. A.一个C语言程序只能实现一种算法 B.一个C函 ...
- c语言教程 define,C语言中define的用法
预处理命令以"#"号开头,如包含命令#include,宏定义命令#define等.一般都放在源文件的前面,它们称为预处理部分. 所谓预处理是指在进行编译之前所作的工作.预处理是C语 ...
最新文章
- 何恺明一作论文 MAE 已有人复现!PyTorch 版!(附链接)
- AMD64,linux-64bit,ARM64,linux-Aarch64和windows 64bit
- 女司机撞上劳斯莱斯不用赔,多亏她车牌上的一个字救了她
- pbl和sbl_综合运用PBL和SBL教学法提高眼科带教质量的探索
- IDEA 一直不停的scanning files to index解决办法
- Swift傻傻分不清楚系列(三)元组与可选类型
- python作用域链_具有动态特性的Python嵌套作用域
- php mysql 开发微博_php+mysql基于Android的手机微博应用开发
- 计算机概论在线阅读,计算器概论 or 计算机概论
- 「开发小技巧」07—如何使用HTML和CSS创建图像叠加图标?
- python实践项目(七)
- Shell脚本监控LVS后台服务器存活状态
- 《构建之法》1-5章读后感
- [ZZ] GTX760首测
- 见过仙女蹦迪吗?一起用python做个小仙女代码蹦迪视频
- 怎么修改PDF文件内容
- jsmind 线条_使用jsMind显示思维导图
- JavaScript-常见数组内置方法
- 3GPP TS 23501-g51 中英文对照 | 4.4.5 Application Triggering Services
- 云班课计算机题答案,云班课答案获取
热门文章
- 7135制作自动量程电压切换_运用单片机制作四位半数字电压表
- 楼主已经复活,博客恢复更新
- 捕获PC微信支付消息的基本原理
- android 游戏sdk 浮标,华为游戏浮标不显示或显示异常
- 捍宇医疗在港上市状态“失效”:此前已通过聆讯,预计将继续亏损
- 外汇交易平台怎么选择?
- 桶装水行业的信息化-思考(一)
- 磁盘存储和文件管理----分区,文件系统 lsblk,blkid,findfs,parted,partprobe,partx,mkfs,mke2fs,uuidgen,locate
- 百度地图api搜索地址定位
- 【考研计算机网络】课堂笔记4 第四章 网络层_Network Layer