哪个看下怎么出错了
程序代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> #define ERROR 0 #define TRUE 1 #define OK 1 #define FALSE 0 typedef int ElemType; typedef int Status; typedef struct Node { ElemType data; //Êý¾ÝÓò struct Node *next; //Ö¸ÕëÓò }Node ; typedef struct Node *LinkList; /*定义LinkList*/ Status visit(ElemType c) { printf("%d", c); return OK; } /*初始化顺序线性表*/ Status InitList(LinkList *L) { *L=(LinkList)malloc(sizeof(Node)); /*产生头结点,并使L指向此头结点*/ if(!(*L)) /*存储分配失败*/ { return ERROR; } (*L)->next=NULL; /*指针域为空*/ return OK; } /*初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数*/ int ListLength(LinkList L) { int i=0; LinkList p=L->next; /* p指向第一个结点*/ while(p) { i++; p=p->next; } return i; } /*初始条件:顺序纯属表L已存在*/ /*操作结果:依次对L的每个数据元素输出*/ Status ListTraverse(LinkList L) { LinkList p=L->next; while(p) { visit(p->data); p=p->next; } printf("\n"); return OK; } /*随机产生n个元素的值,建立带头结点的单链表线性表L (尾插法)*/ void CreateListTail(LinkList *L, int n) { LinkList p,r; int i; srand(time(0)); /*初始化随机数种子*/ *L = (LinkList)malloc(sizeof(Node)); /*L为整个线性表*/ r=*L /*r为指向尾部结点*/ for(i=0;i<n;i++) { p = (Node *)malloc(sizeof(Node)); /*生成新结点*/ p->data = rand()%100+1; /*随机生成100以内的数字*/ r->next=p; /*将表尾终端点的指针指向新结点*/ r=p; /*将当前的新结点定义为表尾终端结点*/ } r->next=NULL; /*表示当前链表结点*/ //创建有环链表 //r->next=p; } Status GetMidNode(LinkList L, ElemType *e) { LinkList search, mid; mid = search = L; while(search->next != NULL) { //search移动的速度是 mid的2倍 if (search->next->next != NULL) { search = search->next->next; mid = mid->next; } else { search = search->next; } } *e = mid->data; return OK; } /* int CreateListHead(LinkList *L, int n) { LinkList p,r; int i=1; srand(time(0)); //初始化随机种子 (*L) = (LinkList)malloc(sizeof(struct Node)); //先建立一个带头结点的单链表 if((*L) == NULL) { fprintf(stderr, "malloc() error.\n"); return ERROR; } (*L)->next = NULL; r=*L; //尾部结点 for(i=0; i<n; i++) { p=(Node *) malloc(sizeof(Node)); p->data=rand()%100+1; r->next =p; r=p; } r->next = NULL; //表示当前链表结束 return OK; } int ClearList(LinkList *L) { LinkList p,q; p=(*L)->next; while(p) { q=p->next; free(p); p=q; } (*L)->next=NULL; return OK; } int printList(LinkList L) { LinkList p; p = L->next; if(p == NULL) { printf("链表为空.\n"); return ERROR; } while(p) { printf("%d ", p->data); p = p->next; } printf("\n"); return OK; } */ int main() { LinkList L; Status i; char opp; ElemType e; int find; int tmp; i=InitList(&L); printf("初始化L后: ListLength(L)=%d\n", ListLength(L)); while(opp != '0') { scanf("%c",&opp); switch(opp) { case '1': ListTraverse(L); printf("\n"); break; case '2': CreateListTail(&L,20); printf("整体创建L的元素(尾插法):\n"); ListTraverse(L); printf("\n"); break; case '3': //clearList(pHead); //清空链表 printf("ListLength(L)=%d \n",ListLength(L)); printf("\n"); break; case '4': //GetNthNodeFromBack(L,find,&e); GetMidNode(L, &e); printf("链表中间结点的值为:%d\n", e); //ListTraverse(L); printf("\n"); break; case '0': exit(0); } } /* printf("Hello world!\n"); CreateListHead(&L,100); printList(L); */ return 0; }怎么编译不通过呀?