单链表操作实现getelem_c语言实现--不带头结点的单链表操作

本文介绍了如何使用C语言实现不带头结点的单链表操作,包括InitList、DestroyList、ClearList、ListLength、GetElem、LocateElem、PriorElem、NextElem、ListInsert和ListDelete等。这些操作中,插入和删除首元素时需要改变头指针的值,其余操作与带头结点的链表类似。代码示例展示了每个操作的具体实现。
摘要由CSDN通过智能技术生成

1,不带头结点的单链表操作中,除了InitList(),GetElem(),ListInsert(),ListDelete()操作与带头结点的单链表有差别外,其它的操作基本上一样。

2,不带头结点单链表示意图:

链表指针直接指向了首元节点,因此在首元节点前插入数据元素或者删除首元节点元素都会改变头指针的值。

3,不带头结点的单链表定义及操作集合,除了插入,删除,清空操作需要传递头指针的地址外,基本上一样。头文件defs.h

1 #ifndef _DEFS_H_2 #define _DEFS_H_

3

4 #include

5 #include //malloc(),free()

6 #include //exit()

7

8 structLNode9 {10 intdata;11 int *next;12 };13 typedef struct LNode *linklist;14

15 //操作集合,注意ClearList,ListInsert,ListDelete

16 void InitList(linklist *L);17 void DestroyList(linklist *L);18 void ClearList(linklist *L); //这里,清空和撤销一样

19 voidListEmpty(linklist L);20 intListLength(linklist L);21 int GetElem(linklist L, int i, int *e);22 int LocateElem(linklist L, inte);23 int PriorElem(linklist L, int cur_e, int *pri_e);24 int NextElem(linklist L, int cur_e, int *nex_e);25 int ListInsert(linklist *L, int i, int e); //注意在首元结点前插入时改变头指针

26 int ListDelete(linklist *L, int i, int *e); //删除首元结点时改变头指针

27 voidTravelList(linklist L);28 #endif //只要是能够改变头指针的值,均是传递头指针的地址

4,InitList操作。其不需要分配结点,直接令头指针为空

1 #include"defs.h"

2

3 void InitLis

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值