闲谈:
本来打算睡觉了,但还是忍不住发一篇题解,毕竟是自己第一次写出来的单链表数据结构,做这道题还真是历经磨难,看看刘汝佳大神的代码,发现好难搞懂(因为那时还没学链表),所以就没出息地用了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;
}
分析:
思路和汝神的代码其实是一样的,只不过这是用指针模拟了链表,刚开始看汝神的代码我也是一脸懵,看了一节链表的网课后思路就清晰很多了
推荐:
嘿嘿,推荐一下我看的网课视频,其实我也是第一次看,但通过这次的经历,我发现只要认真看就一定会有很大的收获,贴一下视频链接: