第六章·线性表运算术式·单链表·其二

"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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容