"Emmmm,开来还是我来早了,早知道就....,算了,还是先看会后续的吧,反正等着也是等着",我站在约定好的路口自言自语到。"刚好,这里有个长椅",我坐了下来,翻开了书。
"那么之后是取?:
int getelem(slink *head,int i,ElemType *e){
先是定义
slink *p;
if(i<1)return 0;
p=head->next;
int j=1;
从第一个开始直到第i个
while(p!=NULL&&j<i){
p=p->next;
j++;
}
下来是判断
if(p==NULL)return 0;
下来是结果
cout<<p->data;
//e=(ElemType*)malloc(sizeof(ElemType));
*e=p->data;
成功
return 1;
}
"这次看起来好多了,->什么的也没什么问题了,轻松秒杀,后面是与其相近的定位:
根据x来定位
slink* locate(slink *head,ElemType x){
定义如下
int i=1;
slink *p=head->next;
循环的条件稍作改变
while(p!=NULL&&p->data!=x){
p=p->next;
i++;
}
那么下来是结果
cout<<i;
return p;
}
"那么再来一个?这个是删除:
int deleteslink(slink *head,int i,ElemType e){
int j=0;
slink *p=head,*q;
while(p->next!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p->next==NULL)return 0;
q=p->next;
删除的语句
p->next=q->next;
e=q->data;
free(q);
return 1;
}
"大概意思是:
1.先确定删除的位置是否合理。
2.在之后,找到这个单元(结点)的前面的单元(结点),也就是第i-1个。
3.p指向它,然后让q指向要删除的单元(结点)。
"来晚了哦,查尔","抱歉啊,路上有些事情耽搁了,不过现在还来的及,我们边走边说吧..."
(赶路timing)
//还差一个插入和输出,元旦期间改为一更吧-2021.1.1
//或许会有增加-2020.1.1