回 帖 发 新 帖 刷新版面

主题:[讨论]同样操作输出不同结果?

大家好!小生有一问题想请教!
数据结构链表的问题:
见程序:
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 ??
}



回复列表 (共2个回复)

沙发

[quote]void main()[/quote]

Are you still using ancient non-standard compiler such as TC????

板凳

The stanard C should be
[code=c]
int main()
//or
int main(int argc, char** argv)
[/code]

[code]
void main()

// this is at least about 20 year old code, and has never been c-standard
[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册