单项链表的释放

C语言实现

#include <stdio.h>
#include <malloc.h>
typedef struct node{
    int data;
    struct node*next;
}ElemSN;
ElemSN * deleteLink(ElemSN*h){
    printf("nihao");
    ElemSN * p;
    for(p=h;h;){
        printf("%d ",h->data);
        h=h->next;
        free(p);
    }
    return h;
}
int main(void){
    int a[5]={10,20,30,40,50};
    int i;
    ElemSN*p,*h,*t;
    for(i=0;i<5;i++){
        p=(ElemSN*)malloc(sizeof(ElemSN));
        p->data=a[i];
        p->next=NULL;
        if(!i) h=t=p;
        else t=t->next=p;
    }
    h=deleteLink(h);
    if(!h){
        printf("已删除~!");
    }else{
        printf("未删除!");
    }
    return 0;
}

时间: 2024-10-09 19:46:45

单项链表的释放的相关文章

3、蛤蟆的数据结构笔记之三线性表单项链表实现

今天励志短语:"人生的价值,即以其人对于当代所做的工作为尺度." 昨天我们看了线性表的一些定义概念,今天来看下其中的单项链表代码如何实现. 1.  声明结构 如下声明一个指向结构的指针.(存放整数的节点,我们也可以根据需要创建字符的链表) typedef struct list_node *list_pointer; typedef struct list_node{ intdata; list_pointerlink; }; list_pointerptr = NULL; 2.  定

单项链表的建立

链表是最基本的数据结构之一,建立单项链表步骤如下 定义链表节点 定义三个指针——头指针,尾指针,当前结点指针.并分别申请内存,初始化 判断是不是头指针,如果是,则当前结点赋值给头指针,尾指针的后继为空;如果当前不是头指针,在尾指针后追加当前结点 完成插入操作后,更新尾指针和尾指针的后继 重新申请一块内存为新的扩展节点使用 定义简单的节点结构体 1 typedef struct Node 2 { 3 int data; 4 struct Node *next; 5 } Node; 最后返回链表的头

采用头插插法和尾插法建立单项链表

PS: 来源2014年数据结构联考复习指导 Page27. #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; const int END_INPUT = -1; typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; LinkList CreatList1(LinkList

计算一个单项链表(链表中有环)中环的长度

这个方法用到了快指针和慢指针,他俩从头结点一起跑,每次快指针走两个节点,慢指针走一个节点,当进入环之后,快指针终会追上慢指针.这时,记录相遇的节点,然后让慢指针再跑一圈就可以测出环的长度了. 这个方法适用于任何情况,无论整个链表都是环,还是环的节点只有一个的. #include<stdio.h>#include<stdlib.h> typedef struct node{    int num;    struct node* next;}NODE; NODE* create(NO

单项链表的实现

实现基于单向链表的list类. struct node { int x; int y; node(int xx, int yy) { x = xx; y = yy; } } 1.构造函数时先设置一个head结点,其指向空.如下: 2.插入结点: 当position为0时,本来应该是这样的: 但是,这个函数在这里插入结点时,如果count=0,则将图中position位置看成NULL,那么下面的插入方法仍然成立不受影响.所以这就是设置头结点的优点是所在了,在position=0时插入结点就不需要通

java实现单项链表(复制,自己总结的在下一篇)

一.单向链表的结构. (1).首先节点的结构,其中包含本节点内容,以及需要指向下一个节点. Java代码 private static class Entry<E>{ E e; Entry<E> nextEntry; public Entry(E e,Entry<E> nextEntry){ this.e=e; this.nextEntry=nextEntry; } } private static class Entry<E>{ E e; Entry<

[java]反转单项链表,用O(n)时间和O(1)空间

链表数据结构 public class ListNode { public int val; public ListNode next; public ListNode(int x) { val = x; } } 反转代码 public ListNode reverse(ListNode head) { ListNode p; ListNode tmp = head.next; head.next = null; while(tmp != null) { p = tmp; tmp = tmp.n

[LeetCode] Rotate List 单项链表旋转

Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL. Hide Tags Linked List Two Pointers 这题有点难理解,k 的意思是链表右起第k 个,k 大于链的个数时候

C++用模板实现单项链表List

#include <iostream> using namespace std; template<class T> class List { struct Node { T data; Node* next; Node() {next=NULL;} }; Node* head; public: List() { head = new Node; } List(List<T>& that)//拷贝构造 { head = new Node; Node* node