"对了查尔,你对昨天弗洛特术师的两个问题有思路吗?","有是有,但是时间太短了...根本不够准备的嘛",查尔沮丧到。"长话短说吧,想不想要那个面授机会?","傻子都想!",查尔脱口而出。查尔开玩笑道:"怎么,难道你解出来了?","略懂一二~","???",查尔的脸上写满了怀疑。"那么这样吧,我来帮你获得这个机会,但是你得帮我个忙"。
查尔看着我自信的样子道:"如果你真的做出来了,也不是不可以,在我所能范围之内我都会尽力帮你","那么我也选择相信你,这是题解..."。
PS:如果没看到之前的点击这里
"az,你竟然真的...,可你不想和弗洛特术师当面学习吗?","emmm怎么说呢,算了你还是不知道为好,现在是另一个问题,能帮我解决一下...住宿费的问题吗...刚来的本地,钱也用光了orz","额...,我猜你暂住在因特的旅馆吗?","?","考虑到你是外来的人,以及相遇的位置,差不多也就是那里了。对了,因特先生是我的舅舅,关于住宿费的问题,嘿嘿","..."(不可描述的心情),"那么就这么说定了~,快走吧,不然一会又没地方了","..."。
(快进到开始),"还好赶上了","...","你怎么不说话了?难道是想到什么不好的事情了吗?","没什么...我想静静...",”emmmm"。
(查尔回答的过程)"现在也没什么事干,不如把剩下的一块整理完吧",我翻开了书。
"那么下来是插入术式:
...
int insert(slink *head,int i,ElemType x){
首先是定义
slink *p,*q;
int j=0;
日常判断
if(i<1)return 0;
准备开始
p=head;
开始循环,和之前一样,条件略有变化
while (p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
接着是未找到的判断
if(p==NULL)return 0;
下来就是分配空间了
q=(slink*)malloc(sizeof(slink));
写入
q->data=x;
修改
q->next=p->next;
连接
p->next=q;
返回结果
return 1;
}
”我对这个大概的思路是:首先建立ElemType类型的x,让q指向它。先是对位置合理性的判断。然后找到head上的第i-1个位置,让p指向它,之后在p指向的位置后插入q,具体操作分别对应术式中的 修改 和 连接,对于这个术式,其速度花费主要在查找上,故其速度类似O(n),图示如下:
emmm,还差一个输出?:
void lists(slink *head){
cout<<endl;
slink *p=head->next;
while (p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
cout<<endl;
}
这个就简单多了,我对其的思路如下:从head的第一个位置开始,按照顺序往下走,直到终点为止。就先记到这里吧。"我合上了书,抬起头刚好看到弗洛特术师和查尔在交流些什么。
不过一会,查尔满脸激动的向我跑来。我已经猜到了结果。"你猜怎么着?",查尔兴奋到。
(跳过xxxxxxxxxxx)
"那么今天的宣讲就到这里了,这也是最后一次宣讲,希望诸位有所收获,早日晋升术师。",接着弗洛特术师又是一样的离去方式。
(中午)
"那没什么事情的话我就先回去了","今天多谢你了","...再(zhua)见(ba)","嗯,再见!"。
(回到旅馆)
//下来就是循环链表了,很快就到栈和队列了-2021.1.2