C语言单向链表的实现

一,链表的概念

一个简单结点的结构体表示为:

typedef int DataType

typedef struct Node
    {
       DataType  _data;              /*数据成员可以是多个不同类型的数据*/
       struct  Node  *_next;      /*指针变量成员只能是-个*/
    }Node,*pNode, *pList;

一个简单的单向链表的图示
这里写图片描述
1.链表是结构、指针相结合的一种应用,它是由头、中间、尾多个链环组成的单方向可伸缩的链表,链表上的链环我们称之为结点。
2.每个结点的数据可用一个结构体表示,该结构体由两部分成员组成:数据成员与结构指针变量成员。
3.数据成员存放用户所需数据,而结构指针变量成员则用来连接(指向)下一个结点,由于每一个结构指针变量成员都指向相同的结构体,所以该指针变量称为结构指针变量。
4.链表的长度是动态的,当需要建立一个结点,就向系统申请动态分配一个存储空间,如此不断地有新结点产生,直到结构指针变量指向为空(NULL)。申请动态分配一个存储空间的表示形式为:

(struct Node*)malloc(sizeof(struct Node))

二,对链表的基本操作

LINKLIST.H

#ifndef __LINKLIST_H__
#define __LINKLIST_H__


#include<stdio.h>
#include<assert.h>
#include<stdlib.h>



typedef int DataType;  //结构定义 

typedef struct Node
{
    DataType _data;
    struct Node* _next;
}Node, *pNode, *pList;
//初始化+销毁链表 
void InitLinkList(pList* pplist);
void DestroyList(pList* pplist);
//尾部插入和删除元素 
void PushBack(pList* pplist, DataType x);
void PopBack(pList* pplist);
//头部插入和删除元素 
void PushFront(pList* pplist, DataType x);
void PopFront(pList* pplist);
//查找 
pNode Find(pList plist, DataType x);
//指定位置插入和删除 
void Insert(pList* pplist, pNode pos, DataType x);
void Erase(pList *pplist, pNode pos);
//删除指定元素 
void Remove(pList* pplist, DataType x);
//删除指定的所有元素 
void RemoveAll(pList* pplist, DataType x);
//单向链表的排序 
Sort(pList *pplist);
//逆序单向链表
void ReverseList(pList* pplist);
//打印单向链表 
void Display(pList plist);



#endif // __LINKLIST_H__

1.链表的初始化与销毁

void InitLinkList(pList* pplist)  //链表初始化函数
{
    assert(pplist);
    *pplist = NULL;
}


void DestroyList(pList
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值