{ int n; int ch; LinkList L; ElemType e; InitList(L); //初始化单循环链表 printf("单循环链表构造成功!\n"); printf("请输入单循环链表的长度:"); scanf("%d",&n); printf("请输入单循环链表各个数据:"); for(int i=1;i<=n;i++) { scanf("%d",&e); ListInsert(L,i,e); //在第i个结点前插入e } printf("*********************************\n"); printf("1、插入结点\n2、删除结点\n3、链表判空\n"); printf("4、链表长度\n5、清空链表\n6、销毁链表\n"); printf("7、结点前驱\n8、结点后续\n9、遍历链表\n"); printf("10、查询位序结点\n"); printf("11、查询结点位序\n"); printf("0、退出操作\n"); printf("*********************************\n"); printf("请选择接下来要进行的操作:"); while(scanf("%d",&ch)&&ch!=0) { if(ch==1){ int set; printf("请输入在第几个结点之前插入新结点:"); scanf("%d",&set); printf("请输入要插入结点的数据:"); scanf("%d",&e); if(ListInsert(L,set,e)) printf("操作成功!\n"); } if(ch==2){ int set; printf("请输入要删除第几个结点:"); scanf("%d",&set); if(ListDelete(L,set,e)) printf("成功删除第%d个结点,其值为%d\n",set,e); } if(ch==3){ if(ListEmpty(L)) printf("这是一个空的链表!\n"); else printf("这不是一个空的链表!\n"); } if(ch==4){ printf("链表的长度为:%d\n",ListLength(L)); } if(ch==5){ if(ClearList(L)) printf("已成功清空链表!\n"); } if(ch==6){ DestroyList(L); } if(ch==7){ printf("请输入要查找元素的前驱:"); scanf("%d",&n); if(PriorElem(L,n,e)) printf("%d元素的前驱是%d\n",n,e); else printf("输入错误!\n"); } if(ch==8){ printf("请输入要查找元素的后续:"); scanf("%d",&n); if(NextElem(L,n,e)) printf("%d元素的后续是%d\n",n,e); else printf("输入错误!\n");//输入的是尾结点也会判断尾输入错误 } if(ch==9){ printf("正序输出链表:"); ListTraverse(L,print); } if(ch==10){ printf("请输入要匹配的数据元素:"); scanf("%d",&n); if(LocateElem(L,n,equal)) printf("等于%d的元素是第%d个\n",n,LocateElem(L,n,equal)); else printf("链表中不存在元素%d\n",n); } if(ch==11){ int set; printf("请输入要查询链表位序的值:"); scanf("%d",&set); if(GetElem(L,set,e)) printf("链表的第%d个元素的值为%d\n",set,e); else printf("输入错误!\n"); } printf("请选择接下来要进行的操作:"); } printf("成功退出操作!\n"); return 0; }
|