C语言实现双向非循环链表的清空

我在之前一篇博客《C语言实现单链表的基本操作》实现了如何清空一个单链表,现在换成了双向的非循环链表,整体思路是一样的。代码上传至:https://github.com/chenyufeng1991/ClearDoubleLinkedList  。

核心代码如下:

Node *ClearDoubleLinkedList(Node *pNode){

    if (pNode == NULL) {
        printf("%s函数执行,原链表就是空链表,无须执行该方法\n",__FUNCTION__);
        return  NULL;
    }else{
        while (pNode->next != NULL) {

            //一次删除每一个节点
            pNode = pNode->next;
            free(pNode->prior);
            pNode->prior = NULL;
        }

        //清除最后一个节点
        free(pNode);
        pNode = NULL;

        printf("%s函数执行,双向非循环链表清空成功\n",__FUNCTION__);
        return pNode;
    }
}
时间: 2024-11-07 00:29:24

C语言实现双向非循环链表的清空的相关文章

C语言实现双向非循环链表的逆序打印

我在上一篇博客中<C语言实现双向非循环链表>实现了如何构造一个双向非循环链表,并实现了正向打印.我还在之前一篇博客<C语言实现单链表的逆序打印>中实现了单链表的逆序打印.这篇博客我们来实现对双向非循环链表进行逆序打印,实现起来非常的简单.代码已经上传至 https://github.com/chenyufeng1991/ReverseDoubleLinkedList . 核心代码如下: //打印非循环双向链表,这个其实是正向打印 void printList(Node *pNode

C语言实现双向非循环链表的节点插入

我在之前一篇博客中<C语言实现双向非循环链表的逆序打印>讲到了如何逆序输出一个双向非循环链表,让我们对这种链表类型有了理性的认识.今天我们要来实现的是对双向非循环链表进行节点的插入.大家可以和<C语言实现单链表节点的插入>单链表的节点插入对比着学习.代码上传至  https://github.com/chenyufeng1991/InsertDoubleLinkedList . 核心代码如下: Node *InsertList(Node *pNode,int pos,int x){

C语言实现双向非循环链表(带头结点尾结点)的节点插入

对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便.我在<C语言实现双向非循环链表(不带头结点)的节点插入>中详细实现了在不带头结点的情况下的插入.这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素.代码上传至 https://github.com/chenyufeng1991/InsertNodeDoubleLinkedList_HeadNode . 核心代码如下: //插入一个节点 //插入位置分别为0,1,2,..... int InsertNodeList(Nod

C语言通用双向循环链表操作函数集

说明 相比Linux内核链表宿主结构可有多个链表结构的优点,本函数集侧重封装性和易用性,而灵活性和效率有所降低.     可基于该函数集方便地构造栈或队列集.     本函数集暂未考虑并发保护. 一  概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序通过链表中的指针链接次序实现.链表由一系列存储结点组成,结点可在运行时动态生成.每个结点均由两部分组成,即存储数据元素的数据域和存储相邻结点地址的指针域.当进行插入或删除操作时,链表只需修改相关结点的指针域即可,因此相比线性

单向非循环链表:链表创建、节点插入、链表打印、节点长度计算、链表清空、链表销毁

/* 单向非循环链表:    初始化    前插入 后插入    打印    链表长度    清空    销毁*/#include <stdio.h>#include <stdlib.h> #define itemType int typedef struct node{    itemType data;    struct node *pNext;}Node; /* 创建Head节点: 节点的pNext为NULL */int initList(Node **ppN){    N

C++ 模板双向不循环链表!!

CTDChain<T,sort,equal,pointer> * nodeTemp = NULL; ------------------------------------------------------------------------------ using namespace std; //双向不循环链表 //sort 指示是否有序 //equal 指示当出现相同节点时的处理方法 //pointer 指示是否是一个指针类型,在析构时必不可少 template <class T

VC2008以资源形式实现多语言版本(非Unicode) .转

http://blog.csdn.net/jiht594/article/details/7043520对比,本文使用了SetThreadLocale. 越来越多的程序支持多语言切换,或者能自动适应当前系统语言,让自己开发的程序支持多语言不仅可以让自己的程序被国人使用,也能让外国程序爱好者使用.VC开发多语言程序有多种方法,或读取配置文件,或使用不同资源DLL等等.这里介绍以资源形式实现多语言版本. 1.打开Visual Studio 2008,新建一个基于对话框工程,名称为LanguageTe

双向不循环链表

下边程序实现的是一个双向不循环链表. #include <stdio.h> #include <stdlib.h> #include <string.h> #define new(p) ((p) = malloc(sizeof(*(p)))) #define IFNAMSIZ 16 struct interface *int_last, *int_list; struct interface { struct interface *next, *prev; char n

C语言实现双向循环链表

#include <stdio.h> #include <stdlib.h> #include <string.h> struct list_head { struct list_head *next, *prev; }; #define list_entry(ptr, type, member) (type *)( (char *)ptr - ((size_t) &((type *)0)->member)) #define list_for_each(p