#include "include.h" #include "dulist.h"
Status compare(ElemType c1,ElemType c2) {// 判断两个数是否相等 相等返回TRUE,否则返回FALSE
if(c1==c2) return TRUE; else return FALSE; }
void visit(ElemType c) {//把C输出
printf("%d ",c); }
void main() { DuLinkList L,p; Status result; //返回状态 OK TRUE FALSE
int i; ElemType e,pre_e,next_e; //--------------------------初始化函数测试-------------------------------
//printf("初始化L前,L=%u\n",L);
result=InitList(&L); if(result==OK) printf("初始化L成功,初始化后L=%u\n",L); //-----------------------------------------------------------------------
//---------------------------判空函数测试--------------------------------
result=ListEmpty(L); if(result==TRUE) printf("线性表L为空\n"); else printf("线性表L不为空\n"); //-----------------------------------------------------------------------
//---------------------------计算元素个数测试----------------------------
i=ListLength(L); printf("L中的元素个数为:%d\n",i); //-----------------------------------------------------------------------
//---------------------------插入函数测试--------------------------------
printf("依次插入 1 3 5 7\n"); result=ListInsert(&L,1,1); result=ListInsert(&L,2,3); result=ListInsert(&L,3,5); result=ListInsert(&L,4,7); i=ListLength(L); printf("插入元素后L中的元素个数为:%d\n",i); printf("L中的元素值为:\n"); p=L->next; while(p!=L) { printf("%d ",p->data); p=p->next; } printf("\n"); //-----------------------------------------------------------------------
//---------------------------删除L中元素函数测试-------------------------
printf("删除L中的第3个元素并用e返回\n"); result=ListDelete(&L,3,&e); //result=ListDelete(&L,6,&e);
if(result==OK) printf("删除成功,删除的第3个元素值为:%d\n",e); else printf("删除失败,不存在此元素\n"); printf("删除后L中的元素值为:\n"); p=L->next; while(p!=L) { printf("%d ",p->data); p=p->next; } printf("\n"); //-----------------------------------------------------------------------
//---------------------------获取元素函数测试----------------------------
printf("获取第3个元素的值并用e返回\n"); result=GetElem(L,3,&e); if(result==OK) printf("第3个元素的值为:%d\n",e); //-----------------------------------------------------------------------
//---------------------------判定函数测试--------------------------------
printf("查看L中是否有与3相等的元素\n"); i=LocateElem(L,3,compare); if(i) printf("第%d个元素的值与3相等\n",i); else printf("没有与3相等的元素\n"); printf("查看L中是否有与6相等的元素\n"); i=LocateElem(L,6,compare); if(i) printf("第%d个元素的值与3相等\n",i); else printf("没有与6相等的元素\n"); //-----------------------------------------------------------------------
//---------------------------获取前驱函数测试----------------------------
result=PriorElem(L,3,&pre_e); if(result==TRUE) printf("在L中3的前驱为%d\n",pre_e); else printf("在L中3没有前驱元素\n"); result=PriorElem(L,1,&pre_e); if(result==TRUE) printf("在L中1的前驱为%d\n",pre_e); else printf("在L中1没有前驱元素\n"); //-----------------------------------------------------------------------
//---------------------------获取后继函数测试----------------------------
result=NextElem(L,3,&next_e); if(result==TRUE) printf("在L中3的后继为%d\n",next_e); else printf("在L中3没有后继元素\n"); result=NextElem(L,7,&next_e); if(result==TRUE) printf("在L中7的后继为%d\n",next_e); else printf("在L中7没有后继元素\n"); //-----------------------------------------------------------------------
//---------------------------Traverse 函数测试---------------------------
printf("正序输出L中的元素\n"); ListTraverse(L,visit); printf("********************************\n"); printf("逆序输出L中的元素\n"); ListTraverseBack(L,visit); //-----------------------------------------------------------------------
//---------------------------置空函数测试--------------------------------
printf("将L置空\n"); result=ClearList(&L); if(result==OK) printf("置空操作成功\n"); printf("判断L是否为空\n"); result=ListEmpty(L); if(result=TRUE) printf("置空后L为空的\n"); //-----------------------------------------------------------------------
//---------------------------销毁函数测试--------------------------------
printf("销毁L...\n"); result=0; result=DestroyList(&L); if(result==OK) printf("销毁L成功,销毁后L=%u\n",L); else printf("销毁失败\n"); //-----------------------------------------------------------------------
}
|