主题:[讨论]同样操作输出不同结果?
大家好!小生有一问题想请教!
数据结构链表的问题:
见程序:
void main()
{ LinkList La,Lb;
ElemType e='a';
init(La);
ListInsert(La,1,e);
init(Lb);
ListInsert(Lb,1,e);
printf("\n La Length is %d",ListLength(La));//输出:2
printf("\n Lb Length is %d",ListLength(Lb));//输出:1 ??
}
对La,Lb进行同样的操作,竟然求长度输出不同,实在迷惑,请指教!谢谢!
附整个程序:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define OK 1
#define ERROR 0
#define NULL 0
typedef char ElemType;
struct LNODE
{
ElemType data;
struct LNODE *next;
};
typedef struct LNODE LNode;
typedef struct LNODE *LinkList;
int init(LinkList L)
{
L=(LNode *)malloc(sizeof(LNode));
if(!L) exit(ERROR);
L->next=NULL;
return OK;
}/*init */
int ListLength(LinkList L)
{
int j=0;
while (L->next)
{
L=L->next;
j++;
}
return j;
}
int ListInsert(LinkList L,int i,ElemType e)
{
LinkList p,s;
int j;
p=L;j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}/*ListInsert Before i */
void main()
{ LinkList La,Lb;
ElemType e='a';
init(La);
ListInsert(La,1,e);
init(Lb);
ListInsert(Lb,1,e);
printf("\n La Length is %d",ListLength(La));//输出:2
printf("\n Lb Length is %d",ListLength(Lb));//输出:1 ??
}
数据结构链表的问题:
见程序:
void main()
{ LinkList La,Lb;
ElemType e='a';
init(La);
ListInsert(La,1,e);
init(Lb);
ListInsert(Lb,1,e);
printf("\n La Length is %d",ListLength(La));//输出:2
printf("\n Lb Length is %d",ListLength(Lb));//输出:1 ??
}
对La,Lb进行同样的操作,竟然求长度输出不同,实在迷惑,请指教!谢谢!
附整个程序:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define OK 1
#define ERROR 0
#define NULL 0
typedef char ElemType;
struct LNODE
{
ElemType data;
struct LNODE *next;
};
typedef struct LNODE LNode;
typedef struct LNODE *LinkList;
int init(LinkList L)
{
L=(LNode *)malloc(sizeof(LNode));
if(!L) exit(ERROR);
L->next=NULL;
return OK;
}/*init */
int ListLength(LinkList L)
{
int j=0;
while (L->next)
{
L=L->next;
j++;
}
return j;
}
int ListInsert(LinkList L,int i,ElemType e)
{
LinkList p,s;
int j;
p=L;j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}/*ListInsert Before i */
void main()
{ LinkList La,Lb;
ElemType e='a';
init(La);
ListInsert(La,1,e);
init(Lb);
ListInsert(Lb,1,e);
printf("\n La Length is %d",ListLength(La));//输出:2
printf("\n Lb Length is %d",ListLength(Lb));//输出:1 ??
}