24小时热门版块排行榜    

查看: 383  |  回复: 3

ruanjayrock

金虫 (小有名气)

[求助] 简单的顺序表程序,不知为什么跳出,求指导

按照数据结构课本的指导练习的顺序表,编辑平台是codeblocks,不知道是什么问题在执行过程中总是跳出。
谢谢大神来指导!!
代码在附件中
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 主程序和子程序代码.rar
  • 2014-02-26 18:20:39, 1.39 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

303723258

铁虫 (初入文坛)

直接把代码贴出来好点呀
2楼2014-02-26 19:21:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ruanjayrock

金虫 (小有名气)

引用回帖:
2楼: Originally posted by 303723258 at 2014-02-26 19:21:45
直接把代码贴出来好点呀

小木虫说是不能再编辑问题了。。里面有10个操作函数,贴出来太长了。。谢谢
3楼2014-02-26 19:44:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ruanjayrock

金虫 (小有名气)

附加一个问题,又编了个单链表的程序,发现这两个程序在插入元素的时候都会跳出,代码如下:

各个子功能:
#include<stdio.h>
#include<malloc.h>
#define maxsize 50
typedef char ElemType;
typedef struct node{
   ElemType data;
   struct node *link;
   }LinkList;

   void initList(LinkList *first)
   {
       first=(LinkList*)malloc(sizeof(LinkList));
       first->link=NULL;
   }

   void DestroyList(LinkList *first)
   {
       LinkList *q;
       while(first->link!=NULL)
       {
           q=first->link;
           first->link=q->link;
           free(q);
       }
   }

   int ListInsert(LinkList *first,int i,ElemType e)
   {
     int j=0;
     LinkList *p=first,*s;
     while(j<i-1&&p!=NULL)
     {
         j++;
         p=p->link;
     }
     if(p==NULL) return 0;
     else
     {
         s=(LinkList *)malloc(sizeof(LinkList));
         s->data=e;
         s->link=p->link;
         p->link=s;
         return 1;
     }
   }

   int Length(LinkList *first)
   {
       LinkList *p=first->link;
       int count=0;
       while(p!=NULL)
       {
           p=p->link;
           count++;
       }
       return count;
   }

   int isEmpty(LinkList *first)
   {
       return(first->link==NULL);
   }

   int GetElem(LinkList *first,int i,ElemType e)
   {
       LinkList *p=first;
       int j=0;
       while(j<i&&p->data!=e)
        {
            p=p->link;
            j++;
        }
        if(p==NULL) return 0;
        else
        {
            e=p->data;
            return 1;
        }
   }

   int Locate(LinkList *first,ElemType e)
   {
       LinkList *p=first;
       int n=1;
       while(p!=NULL&&p->data!=e)
       {
           p=p->link;
           n++;
       }
       if(p==NULL) return 0;
       else return n;
   }


   int Remove(LinkList *first,int i,ElemType e)
   {
       int j=0;
       LinkList *p=first,*q;
       while(j<i-1&&p!=NULL)
       {
           j++;
           p=p->link;
       }
       if(p==NULL) return 0;
       else
       {
           q=p->link;
           if(q==NULL) return 0;
           e=q->data;
           p->link=q->link;
           free(q);
           return 1;
       }
   }

   void Copy(LinkList *first1,LinkList *first2)
   {
       LinkList *scrptr=first2->link;
       LinkList *destptr=first1;
       while(scrptr->link!=NULL)
       {
           destptr->link=(LinkList*)malloc(sizeof(LinkList));
           if(!destptr) printf("存储分配失败\n;exit(1);";
           destptr=destptr->link;
           destptr->data=scrptr->data;
           scrptr=scrptr->link;
       }
       destptr->link=NULL;
   }

   void DispList(LinkList *first)
   {
       LinkList *p=first->link;
       while(p!=NULL)
       {
           printf("%c",p->data);
           p=p->link;
       }
       printf("\n";
   }

main函数:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include "danlianbiao.c"

void main()
{
    LinkList *first;
    ElemType e;
    printf("(1)初始化单链表\n";
    initList(first);
    printf("(2)依次插入a,b,c,d,e元素\n";
    ListInsert(first,1,'a');
    ListInsert(first,2,'b');
    ListInsert(first,3,'c');
    ListInsert(first,4,'d');
    ListInsert(first,5,'e');
    printf("(3)输出单链表\n";
    DispList(first);
    printf("(4)单链表first长度=%d\n",Length(first));
    printf("(5)单链表为%s\n",(isEmpty(first)?"空":"非空");
    GetElem(first,3,e);
    printf("(6)单链表第三个元素为%c\n",e);
    printf("(7)元素a的位置=%d\n",Locate(first,'a'));
    printf("(8)在第四个元素位置上插入f元素\n";
    ListInsert(first,4,'f');
    printf("(9)输出单链表";
    DispList(first);
    printf("(10)删除第三个元素\n";
    Remove(first,3,e);
    printf("(11)输出单链表";
    DispList(first);
    printf("(12)释放单链表";
    DestroyList(first);
}

来个大神指导一下,多谢!
4楼2014-02-26 21:04:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ruanjayrock 的主题更新
信息提示
请填处理意见