| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:运行时,提示可执行程序停止工作,求大神指点(链表)
只看楼主 加入收藏
千里孤坟
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-11-1
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
运行时,提示可执行程序停止工作,求大神指点(链表)
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define ElemType int
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;
LinkList L;
 int InitList_L()
   {
    L=(LinkList)malloc(sizeof(LNode));
    if(!L)
        return 0;
    L->next=NULL;
    return 1;
    }

/*void CreateList_L(LinkList &L,int n)
{
    LinkList p;
    int i;
    L=(LinkList)malloc(sizeof(LNode));

    L->next=NULL;
    for(i=0;i<n;i--)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",p->data);
    }
    p->next=L->next;
    L->next=p;
}*/
int CreateList_L(LinkList &L,int n)
    {
         LinkList p,q;
         int i;
         L=(LinkList)malloc(sizeof(LNode));
         q=L;
         for(i=0;i<n;i++)
         {
             p=(LinkList)malloc(sizeof(LNode));
              scanf("%d",p->data);
              q->next=p;
              q=p;
              p->next=NULL;
          }
           return 1;
    }
 

int LinkInsert_L(LinkList &L,int i,ElemType e)
{
    LinkList s,p;
    int j;
    p=L;j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
        return 0;
    s=(LinkList)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return 1;
}

int ListDelete_L(LinkList &L,int i,ElemType &e)
{
    LinkList q,p;
    p=L;
    int j=0;
    while(p->next && j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
        return 0;
    q=p->next;
    p->next=q->next;
    e=q->data;
    free(q);
    return 1;
}

void PrintList_L(LinkList &L)
{
 LinkList p;
 p=L->next;
 while(p)
  {
   printf("%d",p->data);
   p=p->next;
   printf("\n");
  }
}

void main()
{
    int number,k;
    //int i;
    LinkList L;
    printf("请依次输入5个整数:\n");
    CreateList_L(L,5);
    printf("请按提示,选择操作选项:\n");
    printf("1 插入元素\n");
    printf("2 删除元素\n");
    printf("3 退出\n");
    scanf("%d",&number);
    switch(number)
    {
    case 1 :printf("选项1\n");
         LinkInsert_L(L,3,9);
        PrintList_L(L);
        break;
    case 2 :printf("选项2\n");
        ListDelete_L(L,4,k);
        PrintList_L(L);
        break;
    case 3 :printf("选项3\n");
        break;
    default:printf("enter data error!\n");
    }
}
搜索更多相关主题的帖子: include return 
2014-11-04 22:06
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:5 
给你改了,你这个有个很无语的问题,你的创建链表函数中的&没有加!!!
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define ElemType int
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;
LinkList L;
int InitList_L(LinkList &L) //具有头结点

   {
    L=(LinkList)malloc(sizeof(LNode));
    if(!L)
        return 0;
        L->data=-1;
    L->next=NULL;
    return 1;
    }

/*void CreateList_L(LinkList &L,int n)
{
    LinkList p;
    int i;
    L=(LinkList)malloc(sizeof(LNode));

    L->next=NULL;
    for(i=0;i<n;i--)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",p->data);
    }
    p->next=L->next;
    L->next=p;
}*/
int CreateList_L(LinkList &L,int n)
    {
         LinkList p,q;
         int i;
  //       L=(LinkList)malloc(sizeof(LNode));
         q=L;
         for(i=0;i<n;i++)
         {
             p=(LinkList)malloc(sizeof(LNode));
              scanf("%d",&p->data);  

              q->next=p;
              q=p;
              p->next=NULL;
          }
           return 1;
    }


int LinkInsert_L(LinkList &L,int i,ElemType e)
{
    LinkList s,p;
    int j;
    p=L;j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
        return 0;
    s=(LinkList)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return 1;
}

int ListDelete_L(LinkList &L,int i,ElemType &e)
{
    LinkList q,p;
    p=L;
    int j=0;
    while(p->next && j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
        return 0;
    q=p->next;
    p->next=q->next;
    e=q->data;
    free(q);
    return 1;
}

void PrintList_L(LinkList &L)
{
LinkList p;
p=L->next;
while(p)
  {
   printf("%d\n",p->data);
   p=p->next;
  

  }
}

int main()
{
    int number,k;
    //int i;

 //   LinkList L;
    printf("请依次输入5个整数:\n");
    InitList_L(L);
    CreateList_L(L,5);
    printf("the \n");
    PrintList_L(L);
    printf("请按提示,选择操作选项:\n");
    printf("1 插入元素\n");
    printf("2 删除元素\n");
    printf("3 退出\n");
    scanf("%d",&number);
    switch(number)
    {
    case 1 :printf("选项1\n");
         LinkInsert_L(L,3,9);
        PrintList_L(L);
        break;
    case 2 :printf("选项2\n");
        ListDelete_L(L,4,k);  //删除第4个元素,从1编号

        PrintList_L(L);
        break;
    case 3 :printf("选项3\n");
        break;
    default:printf("enter data error!\n");
    }
    system("pause");
    return 0;
} 
2014-11-07 11:48
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
收藏
得分:5 
回复 2 楼 soulmate1023
为什么你整理后的程序我在Devc++上面运行还是闪了一下,然后就没了。。。。貌似行不通的样子。。。。。

#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2014-11-12 23:12
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 3 楼 七夜之华
?是吗?我这里没有呀

2014-11-13 16:43
快速回复:运行时,提示可执行程序停止工作,求大神指点(链表)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023251 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved