• 【程序填空】单链表类定义 C++


    温馨提示:本题为深大OJ原题,深大的同学请勿直接抄袭,以免出现多个代码相同以致评0分的情况,代码和思路仅供参考,希望大家能逐步成长。

    目录

    题目描述

    思路分析

    AC代码 

    题目描述

    已知带头结点的单链表的类界面和部分函数定义

    请根据主函数的要求,完成单链表类的其他函数填空

    输入

    第1行先输入n表示有n个数据,接着输入n个数据

    第2行输入要插入的位置和新数据

    第3行输入要插入的位置和新数据

    第4行输入要删除的位置

    第5行输入要删除的位置

    第6行输入要查找的位置

    第7行输入要查找的位置

    输出

    数据之间用空格隔开

    第1行输出创建后的单链表内容

    接着每一次操作后,如果操作成功则输出整个单链表内容,如果操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出表内容

    输入样例1

    5 1 2 3 4 5
    6 666
    9 99
    1
    6
    1
    0

    输出样例1

    1 2 3 4 5
    1 2 3 4 5 666
    error
    2 3 4 5 666
    error
    2
    error

    思路分析

    以下思路均为本人习惯思维,仅供参考。 

    注意到是带头节点的单链表,头节点不存储数据,这样我们的插入和删除以及一些其他的操作都不需要区分是不是头节点。

    每个操作上来先判断操作失败的情况,插入和删除还有查找都去判断位置是否合法,肯定不能小于1和大于size。

    接下来就是遍历链表问题,插入和删除都需要遍历,这代码长得都一样,记住就行。

    输出格式还是那样,尾部没有空格的就是先输出前n-1个,最后输出最后一个和换行。

    国庆快乐。

    AC代码 

    1. //以下完成其他类函数定义
    2. int LinkList::LL_insert(int item,int i){
    3. if(i<1||i>size+1)
    4. return ERROR;
    5. ListNode*p=head;
    6. int j=1;
    7. while(j++<i){
    8. p=p->next;
    9. }
    10. ListNode*q=new ListNode();
    11. q->data=item;
    12. q->next=p->next;
    13. p->next=q;
    14. size++;
    15. return OK;
    16. }
    17. int LinkList::LL_del(int i){
    18. if(i<1||i>size)
    19. return ERROR;
    20. ListNode*p=head,*q=head->next;
    21. int j=1;
    22. while(j++<i){
    23. p=p->next;
    24. q=q->next;
    25. }
    26. p->next=q->next;
    27. delete q;
    28. size--;
    29. return OK;
    30. }
    31. int LinkList::LL_get(int i){
    32. if(i<1||i>size)
    33. return ERROR;
    34. ListNode*p=head->next;
    35. int j=1;
    36. while(j++<i){
    37. p=p->next;
    38. }
    39. return p->data;
    40. }
    41. void LinkList::LL_print(){
    42. ListNode*p=head->next;
    43. for(int i=1;i<size;i++){
    44. cout<<p->data<<' ';
    45. p=p->next;
    46. }
    47. cout<<p->data<<endl;
    48. }
    49. ListNode* LinkList::index(int i){return NULL;}
    50. //主函数定义
  • 相关阅读:
    我的世界1.19.2最终优化模组推荐:这60个优化模组让你的体验更好
    Redis订阅发布
    【DesignMode】适配器模式(adapter pattern)
    Spring Boot 日志文件
    使用 snappyjs 压缩数据并解压
    【云驻共创】【HCSD大咖直播】亲授大厂面试秘诀
    设计模式胡咧咧之策略工厂实现导入导出
    苹果app开发流程详解​
    基于SSM的公寓房屋出租系统
    服务器连接校园网
  • 原文地址:https://blog.csdn.net/weixin_62264287/article/details/127091022