sinat_24091517 2016-03-21 14:41 采纳率: 36.4%
浏览 1448
已采纳

一个c语言的链表问题,总是产生垃圾值,好几个指针错误找不到。

#include
#include
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;

typedef int Status;

Status ListInsert_L(LinkList *L,int i,ElemType e)
{
LinkList p,s;
int j=0;
p=*L;
while(p&&j {
p=p->next;
++j;
}
if(!p||(j>i-1))return 0;
s=(LinkList)malloc(sizeof(LNode));
s->next=p->next;p->next=s;
s->data=e;
return 1;
}
Status ListDelete_L(LinkList *L,int i)
{
LinkList p,q;
int j;
p=*L;j=0;
while(p->next&&j {
p=p->next;++j;
}
if(!p->next||(j>i-1))return 0;
q=p->next;p->next=q->next;
free(q);
return 1;
}
void CreateList_L(LinkList *L,int n)
{
LinkList p,s;
p=*L;
for(n;n>0;--n)
{

int tmp;
s=(LinkList)malloc(sizeof(LNode));
scanf("%d",&tmp);
s->data=tmp;
s->next=p->next;p->next=s;
}
}

Status GetElem_L(LinkList L,int i,ElemType e)
{
LinkList p;int j;
p=L->next;j=1;
while(p&&j {
p=p->next;++j;
}
if(!p||j>i)return 0;
e=p->data;
return 1;
}
Status ListLenght_L(LinkList L)
{
int j=0;
LinkList p=L;
while(p->next)
{
j++;
}
return j;
}
Status LocateElem_L(LinkList *L,ElemType e,int *n/
,compare()*/)
{
LinkList p,s;
int j=0;
p=*L;
while(p->next)
{
p=p->next;++j;
if(p->data==e)
{
*n=j;return 1;break;
}
else return 0;
}
}
Status ListTraverse(LinkList *L)
{
LinkList p;
p=*L;
while(p->next)
{
printf("%d\t",p->data);
p=p->next;
}
}
void main()
{
LinkList L;
CreateList_L(&L,5);
ListTraverse(&L);
ListInsert_L(&L,4,8);
ListTraverse(&L);
ListDelete_L(&L,4);
ListTraverse(&L);
system("pause");
}


  • 写回答

1条回答

  • threenewbee 2016-03-21 15:36
    关注
    
    #include<stdio.h>
    #include<stdlib.h>
    typedef int ElemType;
    typedef struct LNode{
        ElemType data;
        struct LNode *next;
    }LNode,*LinkList;
    
    typedef int Status;
    
    Status ListInsert_L(LinkList *L,int i,ElemType e)
    {
        LinkList p,s;
        int j=0;
        p=*L;
        while(p&&j<i-1)
        {
            p=p->next;
            ++j;
        }
        if(!p||(j>i-1))return 0;
        s=(LinkList)malloc(sizeof(LNode));
        s->next=p->next;p->next=s;
        s->data=e;
        return 1;
    }
    Status ListDelete_L(LinkList *L,int i)
    {
        LinkList p,q;
        int j;
        p=*L;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;
        free(q);
        return 1;
    }
    void CreateList_L(LinkList *L,int n)
    {
        LinkList p,s;
        p=*L;
        for(n;n>0;--n)
        {   
            int tmp;
            s=(LinkList)malloc(sizeof(LNode));
            scanf("%d",&tmp);
            s->data=tmp;
            s->next=p->next;p->next=s;
        }
    }
    
    Status GetElem_L(LinkList L,int i,ElemType *e)
    {
        LinkList p;int j;
        p=L->next;j=1;
        while(p&&j<i)
        {
            p=p->next;++j;
        }
        if(!p||j>i)return 0;
        *e=p->data;
        return 1;
    }
    Status ListLenght_L(LinkList L)
    {
        int j=0;
        LinkList p=L;
        while(p->next)
        {
            j++;
        }
        return j;
    }
    Status LocateElem_L(LinkList *L,ElemType e,int *n/*,compare()*/)
    {
        LinkList p,s;
        int j=0;
        p=*L;
        while(p->next)
        {
            p=p->next;++j;
            if(p->data==e)
            {
                *n=j;return 1;break;
            }
            else return 0;
        }
    }
    Status ListTraverse(LinkList *L)
    {
        LinkList p;
        p=*L;
        p=p->next;
        while(p)
        {
            printf("%d\t",p->data);
            p=p->next;
        }
        printf("\n");
        return 0;
    }
    void main()
    {
        LinkList L=(LinkList)malloc(sizeof(LNode));
        L->next=NULL;
        CreateList_L(&L,5);
        ListTraverse(&L);
        ListInsert_L(&L,4,8);
        ListTraverse(&L);
        ListDelete_L(&L,4);
        ListTraverse(&L);
        system("pause");
    }
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果