不知道如何查程序哪里重复定义,希望大家能够指点一下。
#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);
}
大概就是这个样子
1> ConnectTest.vcxproj -> D:\Personal\Administrator\桌面\新建文件夹 (2)\ConnectTest\Debug\ConnectTest.exe
1>FinalizeBuildStatus:
1> Deleting file "Debug\ConnectTest.unsuccessfulbuild".
1> Touching "Debug\ConnectTest.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:02.49
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========