为什么打印出来的是-89787876?
#include<stdio.h>#include<stdlib.h>
#define max
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int Status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
Status InitList(LinkList &L){
L=new LNode;
L->next=NULL;
return OK;
}
Status ListInsert(LinkList &L,int i,ElemType e){
int j=0;
LinkList p=L,s;
if(!p||j>i-1)return ERROR;
while(p&&j<i-1){
p=p->next;
j++;
}
s=(LinkList)malloc(sizeof(struct LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
void output(LinkList L){
LinkList p=L->next;
while(p){
printf("%d\n",p->data);
p=p->next;
}
}
Status ListDelete(LinkList &L,int i){
LinkList p=L,q;
int j=0;
while((p->next)&&(j<i-1)){
p=p->next;
++j;
}
if(!(p->next)||(j>i-1))return ERROR;
q=p->next;
p->next=q->next;
delete q;
return OK;
}
LNode *LocateElem(LinkList L,ElemType e){
LinkList p=L;
p=L->next;
if(p&&p->data!=e){
p=p->next;
return p;}
else printf("error");
}
Status GetElem(LinkList L,int i,ElemType e){
LinkList p=L;
int j=1;
while(p&&j<i){
p=p->next;
++j;
}
if(!p||j>i)return ERROR;
e=p->data;
return OK;
}
void Find(LinkList L,int x)//查找值为x的直接前驱结点q
{
LinkList p;
p=L;
while( p->next &&p->next->data!=x)
p=p->next;
if(p->next)
printf("%d的位置为:第%d位\n\n",x,p->data+1);
else
printf("没找到!!\n\n");
}
Status GetElem_L(LinkList L,int i,ElemType e) {
LinkList p;
p=L->next;
//初始化,p指向第一个结点
int j=1;
//j为计数器
while(p&&j<i)
//顺链域向后扫描,直到p指向第i个元素或p为空
{ p=p->next; ++j; }
if(!p||j>i)
//第i个元素不存在
return ERROR;
e=p->data;
//取第i个元素
return OK; }
main(){
int i;
long int e;
LinkList L;
InitList(L);
for(i=1;i<10;i++)
ListInsert(L,i,i);
output(L);
printf("\n");
ListDelete(L,4);
ListInsert(L,4,90);
ListInsert(L,9,100);
output(L);
printf("\n");
Find(L,90);
Find(L,100);
GetElem_L(L,3,e);
printf("%d\n",e);
}