UVa11988 Broken Keyboard (用指针模拟链表做法)

闲谈:

本来打算睡觉了,但还是忍不住发一篇题解,毕竟是自己第一次写出来的单链表数据结构,做这道题还真是历经磨难,看看刘汝佳大神的代码,发现好难搞懂(因为那时还没学链表),所以就没出息地用了STL里的list,AC了这道题,但心里一直不是滋味,就下定决心学学链表,在b站上搜了数据结构的网课,总算是开了一点点窍,就用指针模拟链表,写了下面的AC代码:

#include <bits/stdc++.h>
using namespace std;

struct List
{
    char date;
    List *next;
};

int main ()
{
    //IN OUT
    char ss[100005];
    while(scanf("%s",ss)!=EOF)
    {
        List *L = (List*)malloc(sizeof(List));//L为头指针
        L->next = NULL;//创建头结点
        List *last = L;//指向链表的最后
        List *cur = L;//指当前的位置
        int len = strlen(ss);
        for(int i=0;i<len;i++)
        {
            if(ss[i]=='[') cur = L;
            else if(ss[i]==']') cur = last;
            else//在cur的后面插入元素
            {
                List *s = (List*)malloc(sizeof(List));
                s->date = ss[i];
                s->next = cur->next;
                cur->next = s;
                if(cur==last) last = s;
                cur = s;
            }
        }
        for(List *i = L->next;i!=NULL;i = i->next)
        printf("%c",i->date);
        putchar('\n');
    }
    return 0;
}

分析:

思路和汝神的代码其实是一样的,只不过这是用指针模拟了链表,刚开始看汝神的代码我也是一脸懵,看了一节链表的网课后思路就清晰很多了

推荐:

嘿嘿,推荐一下我看的网课视频,其实我也是第一次看,但通过这次的经历,我发现只要认真看就一定会有很大的收获,贴一下视频链接:

王道计算机考研 数据结构_哔哩哔哩_bilibili【王道论坛】版权所有,官方发布,尽情三连。正版课程咨询微信:wangdao05我们免费分享去年的“考点精讲视频”,今年会继续迭代优化。正版课程还将包含但不限于:①王道课后习题视频讲解、②暑期强化直播、③考前冲刺课程、④真题模拟题视频讲解、⑤助教答疑、⑥C语言领学、⑦专业课督学、⑧线上模考、⑨机试课程、⑩... 等多样服务,满足备考各阶段学习所需。“盗卖别人的知识成果是违法行为,盗卖可耻!希望考研的https://www.bilibili.com/video/BV1b7411N798?p=12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值