请选择 进入手机版 | 继续访问电脑版

《数据结构》实验课期末考试

[复制链接]
卓小兔 发表于 2021-1-2 19:45:41 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
#代码是直接从提交的答题卡上复制的,大概格式啥有错
#运行效果其时要求用自己的姓名就不粘过来了

题目:
1、(30分)使用自己的姓名拼音字母创建一个单链表(带头结点),注意,如果链表存在已知字母,则不能插入。输入格式样例:
请输入姓名:LIMING
创建的单链表输出为:L->I->M->N->G->^
注:
(1)输入自己姓名拼音,大写全拼,中间无空格;
(2)如果链表长度小于5(不含),则在单链表尾部,反复插入单个字母A,直到链表长度即是5为止。
2、在1所创建的单链表底子上,采取两种方法实现如下功能:查找单链表倒数第2个元素,并输出元素值。
(1)(30分)第一种方法(通例思路):求出单链表长度(Length),然后通过idx = Length-N+1(N为倒数位置序号),得到idx值,再重新遍历单链表,直到遍历到idx即可。
对应实现函数void GetReverseValue1(LinkList L,int n,char &value)//value为返回的查找元素值
(2)(40分)第二种方法:要求不能采取第一种方法的思路(第一种方法需采取两次遍历,即一次用于求单链表长度,别的一次用于查找idx),且仅采取一次遍历即可得到倒数第2个元素的值。
对应实现函数void GetReverseValue2(LinkList L,int n,char &value)//value为返回的查找元素值
最终输出样式为(以LIMING为例):
第一种方法(通例思路)单链表倒数第2个元素值为:N
第二种方法单链表倒数第2个元素值为:N

1.源码:
[code]#includeusing namespace std;typedef struct Lnode {        char data;        struct Lnode* next;}Lnode,*Linklist;//创建单链表bool initlist(Linklist& L,string n) {        Linklist p,s;        L = new Lnode;        L->next = NULL;        p = L;        for (char i : n) {                s = new Lnode;                s->data = i;                p->next = s;                p = p->next;        }        p->next = NULL;        return true;}//显示单链表void display(Linklist L) {        Linklist p=L->next;        while (p!= NULL) {                cout data next;        }        cout next;        }        //盘算序号        int idx;        idx = len - n + 1;        //查找元素        p = L;        for (int i = 0; i < idx; i++) {                p = p->next;        }        value = p->data;}void GetReverseValue2(Linklist L, int n, char& value) {        Linklist p = L, s = L;        //s指针先移动k步        for (int i = 0; i < n; i++) {                s = s->next;        }        //一次遍历        while (s != NULL) {                s = s->next;                p = p->next;        }        value = p->data;}int main() {        Linklist L;        string name;        char value1,value2;        cout > name;        if (initlist(L, name)) {                cout
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )