#include "include.h" #include "list.h"
Status compare(ElemType c1,ElemType c2) {//判断两个数是否相等
if(c1==c2) return TRUE; else return FALSE; }
void visit(ElemType c) { printf("%d ",c); }
void main() { LinkList L,p; Status result; //返回状态 OK TRUE ,FALSE
int i; ElemType e; //------------------------初始化函数测试-------------------------------
printf("初始化函数测试\n"); //printf("初始化L前:L=%u\n",L);
result=InitList_CL(&L); if(result==OK) printf("L初始化成功\n"); else printf("L初始化失败\n"); printf("初始化L后:L=%u\n",L); //---------------------------------------------------------------------
//------------------------求L中的元素个数函数测试----------------------
printf("求初始化后L中元素的个数\n"); i=ListLength_CL(L); printf("初始化后L中元素的个数为%d\n",i);
//---------------------------------------------------------------------
//------------------------插入函数测试---------------------------------
printf("向L依次插入1 3 5\n"); result=ListInsert_CL(&L,1,1); result=ListInsert_CL(&L,2,3); result=ListInsert_CL(&L,3,5); printf("插入后L中的元素为:\n"); p=L->next->next; //p指向第一个元素 (L->next是头结点)
while(p!=L->next) { printf("%d ",p->data); p=p->next; } printf("\n"); //---------------------------------------------------------------------
//--------------------------置空/ 判空 函数测试------------------------
i=ListLength_CL(L); printf("置空前L的长度为:%d\n",i); printf("判断L是否为空\n"); result=ListEmpty_CL(L); if(result==TRUE) printf("L 是一个空表\n"); else printf("L 不为空\n"); printf("置空L...\n"); result=ClrearList_CL(&L); i=ListLength_CL(L); printf("置空后L的长度为:%d\n",i); result=ListEmpty_CL(L); if(result==TRUE) printf("L 是一个空表\n"); else printf("L 不为空\n");
//---------------------------------------------------------------------
//--------------------------获取第i个元素函数测试----------------------
printf("向L依次插入1 3 5 7 9\n"); result=ListInsert_CL(&L,1,1); result=ListInsert_CL(&L,2,3); result=ListInsert_CL(&L,3,5); result=ListInsert_CL(&L,4,7); result=ListInsert_CL(&L,5,9); printf("插入后L中的元素为:\n"); p=L->next->next; //p指向第一个元素 (L->next是头结点)
while(p!=L->next) { printf("%d ",p->data); p=p->next; } printf("\n"); printf("获取第3个元素的值并赋给e\n"); result=GetElem_CL(L,3,&e); if(result==OK) printf("第3个元素的值为 :%d\n",e);
//---------------------------------------------------------------------
//-------------------------LocateElem函数测试--------------------------
printf("查看L中是否有与3和4相等的元素\n"); i=LocateElem_CL(L,3,compare); if(i==0) printf("没有与3相等的元素\n"); else printf("第%d个元素的值与3相等\n",i); i=LocateElem_CL(L,4,compare); if(i==0) printf("没有与4相等的元素\n"); else printf("第%d个元素的值与4相等\n",i); //---------------------------------------------------------------------
//-------------------------获取前驱函数测试----------------------------
result=PriorElem_CL(L,3,&e); if(result==TRUE) printf("元素3的前驱元素是:%d\n",e); else printf("元素3没有前驱函数\n");
result=PriorElem_CL(L,1,&e); if(result==TRUE) printf("元素1的前驱元素是:%d\n",e); else printf("元素1没有前驱元素\n");
//---------------------------------------------------------------------
//-------------------------获取后继函数测试----------------------------
result=NextElem_CL(L,3,&e); if(result==TRUE) printf("元素3的后继元素是:%d\n",e); else printf("元素3没有后继函数\n");
result=NextElem_CL(L,9,&e); if(result==TRUE) printf("元素9的后继元素是:%d\n",e); else printf("元素9没有前驱元素\n");
//---------------------------------------------------------------------
//-----------------------------删除函数测试----------------------------
p=L->next->next; //p指向第一个元素 (L->next是头结点)
printf("删除元素钱L中的元素值\n"); while(p!=L->next) { printf("%d ",p->data); p=p->next; } printf("\n"); printf("删除第3个元素\n"); result = ListDelete_CL(&L,3,&e); if(result==OK) printf("删除的第3个元素的值为:%d\n"); else printf("删除失败\n"); printf("删除后L中的元素\n"); p=L->next->next; //p指向第一个元素 (L->next是头结点)
printf("删除元素钱L中的元素\n"); while(p!=L->next) { printf("%d ",p->data); p=p->next; } printf("\n");
//------------------------------------------------------------------------
//----------------------------ListTraverse--------------------------------
printf("输出L中的元素\n"); result=ListTraverse_CL(L,visit); //------------------------------------------------------------------------
//----------------------------销毁L---------------------------------------
printf("销毁L前:L=%u\n",L); result=DestroyList_CL(&L); if(result==OK) printf("销毁L成功,销毁L后:L=%u\n",L); }
|