单链表的实现

单链表基本概念

单链表是一种单向的线性表,不需要连续的存储空间.插入删除操作不需要移动元素,只需要改变指针.但是访问元素不是随机的,必须从表头开始依次向后搜索.访问时间和访问位置有关.

单链表的实现

基本结构

typedef struct SeqList{
        ElemType data;
        struct SeqList *next;
        int Length; 
        //Length表是表内元素个数 
        };

初始化操作

//初始化链表 
SeqList* intList(){
    SeqList *T;   
    T = (SeqList*)malloc(sizeof(SeqList));  //*分配内存* // 
    //设置头指针 
    T->data =0;
    T->Length = 0;
    T->next = NULL;
    return T;
}

指针变量的好处是可以直接修改内容的值,避免生成多个表的副本.相比我上一篇相比不在需要返回新的线性表,节约了内存消耗.具体可以参见我上一篇动态分配内存顺序表来体会其中区别.

添加元素

//在表尾添加元素e 
void listAdd(SeqList *T,ElemType e){
    SeqList *p = intList();
    T->Length++;    //创建内容为e的节点 
    p->data = e;
    SeqList *a = T; //局部指针防止T改变,也可给T加上控制标识实现
    //移动到表尾添加e 
    while(a->next){
        a = a->next;
    }
    a->next = p;
    
} 

插入元素

//插入元素e 
void listInsert(SeqList *T,int i,ElemType e){
    SeqList *p = intList();
    p->data = e;    //创建e节点 
    SeqList *a = T;
    int j;
    if(i>T->Length){
        //在表尾后方插入 
        while(T->Length<i){
        listAdd(T,0);
        }
        listAdd(T,e);
    }else{
        //在表位插入 
        if(i==T->Length){
            
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值