单链表的基本操作

目录

单链表基础

单链表比较顺序表:

单链表的基本操作,

1.存储结构的创建

2.查找元素

3.插入元素

4.删除元素


单链表基础

单链表又可以用头指针表示。

单链表比较顺序表:

1.单链表在插入和删除时不必修改大量的元素。   //优点

2.单链表在查找某一元素时的时间复杂度为O(n),需要从头节点开始。//缺点

3.单链表在插入节点可以随时开辟空间,不必判断长度。//优点

链表节点由data域和next域组成,next域存放的是下个节点的地址。

不含头结点,逻辑结构如下所示,

 datanext
0  d1n
n  d2m
m  d3NULL

单链表的基本操作,

1.存储结构的创建

2.查找元素

3.插入元素

4.删除元素

1.存储结构的创建

这里主要强调一下*linklist,专门用于创建头指针,lnode*用来创建指向节点的指针

这里只是规范化定义。

typedef struct lnode{//typedef定义的结构体比较规范
    Elemtype data; 
    struct lnode* next;//类比int*
}lnode,*linklist;

2.查找元素

在单链表中取得第i个元素必须从头指针出发。

status getelem_l(linklist L,int i,elemtype &e){
    lnode*p = L->next;j = 1;//指针p用于遍历,j做累加器
    while(p&&j<i){
    p = p->next;++j;
    }
    if(!p||j>i)
    return ERROR;
    e = p->data;
    return OK;
}
//status创建的函数要返回值为ERROR,FALSE,TURE,OK

3.插入元素

这块要明白三个指针的作用,还有就是节点连接时的交接。、

p普通指针,用于遍历和接受临时变量

s节点指针,开辟空间存放临时变量

status insert_l(linklist &L,int i,elemtype e){
    lnode* p=L;j=0;
    linklist s;//结构体指针定义时不分配空间
    while(p&&j<i-1){
    p=p->next;++j;
    }
    if(!p||j>i-1)
    return ERROR;
    s = (linklist)malloc(sizeof(lnode));//由系统生成一个lnode型的节点,将起始位置赋值给指针s
    s->data = e;s->next = p->next;
    p->next = s;
    return OK;
}

4.删除元素

status delete_l(linklist &L,int i){
    lnode* p = L;++j;
    while(p->next&&j<i-1){//遍历次数要分析清楚
    p = p->next;
    ++j;
    }    
    if(!(p->next)||j>i-1)return ERROR;
    q = p->next; p->next = q->next;
    free(q);
    q = NULL;
    return OK;
}

以上是线性表的基本操作,用于个人学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值