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 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺