不知道程序哪里出问题了,好像是重复定义,希望大家指点一下

---BearWolf 发布于 2013/11/20 15:12
阅读 87
收藏 0
#include"stdio.h"
#include"math.h"
#include"time.h"
#include"stdlib.h"
#include"ctype.h"
#include"string.h"
#include"io.h"


#define OK 1
#define ERROR 0
#define TRUE 1
#define FLASE 0


#define MAXSIZE 20


typedef int Status;
typedef int ElemType;


//单链表存储结构
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;


Status visit(ElemType c)
{
printf("%d",c);
return OK;
}


Status InitList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(LNode));
if(!(*L))
return ERROR;
(*L)->next=NULL;
return OK;
}//链表初始化


Status ListEmpty(LinkList L)
{
if(L->next)
return FLASE;
else 
return TRUE;
}//链表L已存在,检测链表是否为空表


Status ClearList(LinkList *L)
{
LinkList p,q;
p=(*L)->next;
    if(p)
{
q=p->next;
free(p);
p=q;
}
(*L)->next=NULL;
return OK;
}//将L重置为空表


int ListLength(LinkList L)
{
int i=0;
LinkList p=L->next;
if(L->next)
{
i++;
p=p->next;
}
return i;
}//返回L中元素的个数


Status GetElem(LinkList L,int i,ElemType *e)
{
int k;
LinkList p;
p=L->next;
for(k=0;k<=i;k++)
{
p=p->next;
}
if(!p||k>i)
return ERROR;
*e=p->data;
return OK;
}//用e返回L中第i个元素的值


int LocateElem(LinkList L,ElemType e)
{
int k;
LinkList p;
p=L->next;
for(k=0;k<=ListLength(L);k++)
{
if(p->data==e)
break;
else 
p=p->next;
}
e=p->data;
return OK;
}//检测L中与e相等的元素


Status ListInsert(LinkList L,int i,ElemType e)
{
int k;
LinkList p,s;
p=L->next;
for(k=0;k<=i;k++)
{
p=p->next;
}
if(k>i||!p)
return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}//在L中第i个元素之前插入e


Status ListDelete(LinkList L,int i, ElemType *e)
{
int k;
LinkList p,s;
p=L->next;
for(k=0;k<=i;k++)
{
p=p->next;
}
if(k>i||p->next)
return ERROR;
s=p->next;
p->next=s->next;
*e=s->data;
free(s);
return OK;
}//删除第i个元素,并用e返回其值


Status ListTraverse(LinkList L)
{
LinkList p=L->next;
while(p)
{
visit(p->data);
p=p->next;
}
return OK;
}//输出L中的全部元素


void CreateListHead(LinkList *L,int n)
{
LinkList p;
int i;
srand(time(0)); 
*L=(LinkList)malloc(sizeof(LNode));
(*L)->next=NULL;
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
p->data = rand()%100+1;  
p->next=(*L)->next;
(*L)->next=p;
}
}//  随机产生n个元素的值,建立带表头结点的单链线性表L(头插法)


void CreateListTail(LinkList *L,int n)
{
LinkList p,r;
int i;
srand(time(0));
*L=(LinkList)malloc(sizeof(LNode));
r=*L;
for(i=0;i<n;i++)
{
p=(LNode*)malloc(sizeof(LNode));
p->data = rand()%100+1; 
r->next=p;
r=p;
}
r->next=NULL;
} //随机产生n个元素的值,建立带表头结点的单链线性表L(尾插法)


void main()
{
LinkList L;
    Status i;
    int j;
    i=InitList(&L);
    printf("初始化L后:ListLength(L)=%d\n",ListLength(L));
    for(j=1;j<=5;j++)
            i=ListInsert(L,1,j);
    printf("在L的表头依次插入1~5后:L.data=");
    ListTraverse(L); 
}












加载中
返回顶部
顶部