LinkedListTraverse(L); getch(); } break;
//5.从链表中查找元素
case 5:{ cout<<\请输入要查询的位置i:\ int j; cin>>j;
if (LinkedListGet(L,j)) {
cout<<\
位
置
i
的
元
素
值
为
\ } else { cout<<\大于链表长度!\
} getch(); } break;
//6.从链表中查找与给定元素值相同的元素在表中的位置
:
case 6:{ cout<<\请输入要查找的元素值:\ int b; cin>>b;
if (LinkedListGet1(L,b)) {
cout<<\
要查找的元素值位置为\
cout<<\
要查找的元素值内存地址为\ } else { cout<<\该值不存在!\
} getch(); } break;
//7.向链表中插入元素
case 7:{ cout<<\请输入要插入的值:\
cout<<\请输入要插入的位置:\
:
:
if(LinkedListInsert(L,k,x)) { } else { } getch(); } break;
//8.从链表中删除元素
cout<<\插入失败!\cout<<\插入成功!\
case 8:{
cout<<\按位置删除\cout<<\按元素删除\int d;
cout<<\请选择:\switch(d) { case 1:{
cout<<\请输入删除位置:\cin>>d;
int y;
if (LinkedListDel(L,d,y)) { } else { }
}break;
cout<<\删除失败!\cout<<\被删除!\
case 2:{
cout<<\请输入删除元素:\ int y; cin>>y;
if (LinkedListDel(L,y)) { } else { }
cout<<\删除失败!\cout<<\被删除!\
}
}
}
}
getch(); } break; }
return 1;
题二 约瑟夫环问题
算法、思想
为了解决这一问题,可以先定义一个长度为30(人数)的数组作为线性存储结构,并把该数组看成是一个首尾相接的环形结构,那么每次报m的人,就要在该数组的相应位置做一个删除标记,该单元以后就不再作为计数单元。这样做不仅算法较复杂,而且效率低,还要移动大量的元素。 用单循环链表来解决这一问题,实现的方法相对要简单得的多。首先定义链表结点,单循环链表的结点结构与一般单链表的结点结构完全相同,只是数据域用一个整数来表示位置;然后将它们组成一个具有n个结点的单循环链表。接下来从位置为1的结点开始数,数到第m个结点,就将此结点从循环链表中删去,然后再从删去结点的下一个结点开始数起,数到第m个结点,再将其删去,如此进行下去,直至全部删去为止。
代码分析
(一) 创建单循环链表 struct Link {
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验一 线性表的基本操作实现及其应用(5)在线全文阅读。
相关推荐: