当前位置:  技术问答>linux和unix

gcc 段错误

    来源: 互联网  发布时间:2016-08-12

    本文导语:  双向链表的初始,插入,删除,不知道哪里有问题 //dlink.h  #ifndef    _DLINK_H_   9 #define    _DLINK_H_  10 typedef int    ElemType;  11 typedef struct DNode{  12         ElemType data;  13         struct DNode *prior...

双向链表的初始,插入,删除,不知道哪里有问题


//dlink.h
 #ifndef    _DLINK_H_
  9 #define    _DLINK_H_
 10 typedef int    ElemType;
 11 typedef struct DNode{
 12         ElemType data;
 13         struct DNode *prior;
 14         struct DNode *next;
 15     }DNode,*DLink;
 16 extern  DNode *New();       //初始化节点
 17 extern  DNode *dlink_Initial(DNode *L);   //初始化L
 18 extern  DNode *dlink_Insert(DNode *L,int i,ElemType e); //在第i个位置插入值                                                             // 为e的节点
 19 extern  DNode *dlink_Delete(DNode *L,ElemType e);  // 删除值为e的节点
 20 extern  void  dlink_Print(DNode *L);  //打印出链表L
 21 #endif

//dlink.c
#include 
  9 #include "dlink.h"
 10 
 11 DNode *New()
 12 {
 13     DNode *p;
 14     p = (DNode *)malloc(sizeof(DNode));
 15     return p;
 16 }
 17 
 18 DNode *dlink_Initial(DNode *L)
 19 {
 20     DNode *p = New();
 21     if(!p) return 0;
 22     p->data = '#';
 23     p->next = p;
 24     p->prior = p;
 25     L = p;
 26     free(p);
 27     return L;
 28 
 29 }
 30 
 DNode *dlink_Insert(DNode *L,int i,ElemType e)
 32 {
 33     DNode *p,*s;
 34     s = New();
 35     s->data = e;
 36     p = L;
 37     int j = 0;
 38     while(j!= i)
 39     {   s->prior = p->prior;
 40         p->prior->next = s;
 41         s->next = p;
 42         p->prior = s;
 43 
 44         p = p->next;
 45         j = j+1;
 46     }
 47     return L;
 48 
 49 
 50 }
 DNode *dlink_Delete(DNode *L,ElemType e)
 53 {
 54     DNode *p,*s ;
 55     p = L->next;
 56     s = p;
 57     while(e != p->data)
 58     {       s = p;
 59             p = p->next;
 60     }
 61     s->next = p->next;
 62     p->next->prior = s;
 63     return L;
 64 }
 65 
 66 void dlink_Print(DNode *L)
 67 {
 68     DNode *q;
 69     q = L->next;
 70     while(q)
 71     {
 72         printf("%d ->",q->data);
 73         q = q->next;
 74     }
          printf("n");
 76 
 77 }
            


|
哎!没人回答就算了,楼主还遭打击。楼主就别伤心了,从新开始学就好了。

|

运行是报段错误?

一半报这种错误,基本上都是非法访问内存,即读一个没有初始化的指针,数组越界等。

具体是代码中的哪里,再看看

|

DNode *dlink_Initial(DNode *L)
这个函数不需要free(p)
大致看了一下,不知道还有没有其他错误

|
用gdb调一下吧
段错误你gdb进去bt看一下就好了,很好找的
靠review代码找段错误,费力不讨好

|
       L = p;
 26     free(p);
 27     return L;
L 跟p指向同一个东西,你free(p);还return L;

无语。。。。。。。。。。

    
 
 

您可能感兴趣的文章:

  • 一套未安装gcc的Linux中安装gcc rpm包时时出现错误
  • 我在Solaris8上安装了gcc3.3Solaris8,但是总是出错!错误如下:gcc: syntax error at line 1: `(' unexpected
  • gcc编译错误
  • 编译 cross-gcc 的错误
  • gcc升级,提示insn-attrtab.o错误
  • gcc-4.4.2升级错误
  • 如何将gcc编译的警告及错误信息保存到文件
  • GCC curses动态库链接的错误
  • 如何将gcc的编译错误输出到一个文本文件?
  • arm-linux-gcc编译XML错误
  • 能否把gcc的错误提示输出到一个文件中?
  • gcc 如何打印上此的错误信息
  • 大神们好! yum install gcc出现错误,请大神指点!
  • 使用arm-linux-gcc编译,出现compilation of header file requested错误
  • gcc编译中出现的这种错误提示 stray '357' in program
  • gcc 编译时错误
  • gcc运行程序出现错误,求助。。。
  • linux环境下gcc编译器对sin函数出现的错误
  • ubuntu 10.10出现极其诡异的情况,使用gcc编译没任何反应,可以继续输入,但是不提示任何错误;使用make编译效果一样;
  • gcc helloworld 出现错误......
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 使用popen来执行gcc命令,如何根据读出来的gcc的输出来判断gcc是否编译成功?
  • 命令:mips_fp_le-gcc,mipsel-gcc 是什么意思?跟一般的gcc有什么区别?
  • 怎样升级我的GCC呀,我用的RH7.2,GCC 2.96 ,我从网上下载了一个gcc-3.2.3.tar.gz
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • gcc-ccore、avr-gcc及arm-gcc的区别
  • gcc在哪里?bash:gcc:command not found
  • 如何删掉GCC3.0(我需要GCC2.0-----)
  • Windows版GCC TDM-GCC
  • 急问:如何卸掉gcc 3.2庄gcc 2.96
  • 有人遇到过吗,在安装GCC时提示,"checking gcc ...no "
  • gcc编译时出错,gcc: installation problem, cannot exec `as': 没有那个文件或目录!!!求助呀呀!!!!!
  • GCC无法安装的问题,希望有人帮我( Debian 4.04ra无法安装GCC)
  • javascript开源软件 iis7站长之家
  • gcc与arm-linux-gcc编译的问题???
  • 下了一个GCC3.0包用tar xjfv gcc-3.0.tar.bz2解压后出现一堆文
  • 请问如何安装rpm格式的gcc如gcc-3.2.2-5.src.rpm,谢谢
  • arm-linux-gcc交叉编译出错,但gcc编译没错,什么原因呢???
  • 在redhat9下,如何将gcc3.x改为gcc2.x?
  • linux x86_64下由于拷贝gcc的lib目录导致gcc编译器出错
  • 求助:当用 gcc 编译时没,加上优化选项 -02 ,可是提示是 gcc: unrecognized option `-02'


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3