5

一个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");
}


查看全部
sinat_24091517
sinat_24091517
2016/03/21 14:41
  • 链表
  • 指针
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复