单链表优点:动态结构,整个空间可以多个链表共用

不需要预先分配空间

插入删除方便

缺点:指针占用额外的空间,不能随机查找


==============list.h========================

#ifndef LIST_H__
#define LIST_H__
#define SIZE 32
typedef struct _datatype
{
    int id;
    char name[SIZE];
    int math;
    int chinese;

}datatype;
typedef struct node_st{

    datatype data;
    struct node_st *next;
}list;

int list_destroy(list *);

void list_display(list *);

int list_insert(list **, datatype *);

int list_delete(list **);

datatype *list_find(list *,int );
#endif

===========list.c=======================

#include"list.h"
#include<stdlib.h>
#include<string.h>
#include<stdio.h>

void list_display(list *me)
{

list *cur;

for (cur = me; cur!=NULL; cur = cur->next)
    {
        printf("%d   %s  %d  %d\n",cur->data.id, cur->data.name, cur->data.math, cur->data.chinese);

}

return ;
}

int  list_destroy(list *me)
{

list * save = NULL;

while(me)
    {
        save = me->next;
        free(me);
        me = save;
       
    }

return 0;

}
        
int list_insert(list **me, datatype *data)
{

list *new;
    new = malloc(sizeof(*new));
    if (NULL == new)
        return -1;
    new->data = *data;
    new->next = *me;
    *me = new;
    return 0;

}
             
                
int list_delete(list **me)
{
    if(NULL == *me)
        return -1;
    list *save;
    save = *me;
    *me = (*me)->next;

free(save);

return 0;

}
datatype *list_find (list *me, int id)

{      
    list *save;
    for (save = me;save!=NULL;save = save->next)
    {
           if( save->data.id ==id)
           {
            return &save->data;
            }
    }
    return NULL;
}

===============main.c==========================

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"list.h"

int main()
{
    list *list = NULL;

datatype tmp;

int i;

for (i = 0; i <7 ; i++)

{
        tmp.id = i;
        snprintf(tmp.name, SIZE, "stu%d",i);
        tmp.math = rand()%100;
        tmp.chinese = rand()%100;
        list_insert(&list, &tmp);

}

list_display(list);
    list_delete(&list);
    printf("=============\n");
    list_display(list);
    datatype *prt;
    prt = list_find(list,3);
    if(prt==NULL)
        printf("can't find\n");
    else
        printf("find it\n");
    list_destroy(list);
return 0;

}

数据结构3_160805无头单向不循环相关推荐

  1. C语言实现链表【一】(无头单向非循环链表)

    无头单向非循环链表 看到这个标题,是不是有小伙伴已经懵了呢? 只学过链表,怎么还有个无头和有头呢?怎么还有个循环和非循环呢?怎么还有个单向和双向呢?一连串的疑问... 其实这些都是链表的表示形式,只不 ...

  2. python创建链表实例_python数据结构链表之单向链表(实例讲解)

    python数据结构链表之单向链表(实例讲解) 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后 ...

  3. 数据结构之链表---单向链表

    逻辑结构: 集合结构:所有数字可以看做一个整体 线性结构:一条有顺序的线把所有的数字串起来 树状结构:所有数字都是从一个数字开始向一个方向扩展出来的 网状结构:任何两个数字之间都有直接的联系,不同数字 ...

  4. 2021 - 9 -下旬 数据结构- 线性表 -双端循环队列 - java实现

    //循环双端队列:Circle Double Ended Queue //本质是对动态数组的优化 //队头队尾都可以添加或删除元素 //相比于普通循环队列需要注意的点是在队头插入元素时的对front前 ...

  5. 大话数据结构 队列10:数组循环队列

    基础介绍 队列 先进先出,出列在队头,进列在队尾 数组可以做成循环队列. 循环队列的一个重要问题:判断队列是空是满? 空队列的判断比较简单:尾游标等于头游标 满队列的判断比较复杂:如果也是用尾游标等于 ...

  6. 数据结构带头结点单向不循环链表(C语言版)

    main.c,负责测试 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<stdlib.h> #inc ...

  7. 数据结构 - 链表(单向环形链表)(约瑟夫问题)

    问题如下(与分析) 构建思路 输入一个数,数到这个数的小孩出圈,出圈顺序的思路 代码实现 根据图解,来一步一步实现 //根据用户输入,计算小孩出圈顺序/**** @param startNo 表示从第 ...

  8. 数据结构链表之单向链表:Python3 实现单向链表——1

    Python3 实现单向链表 链表定义与简介 定义:链表与顺序表(Python中列表)性质相反,链表是物理单元上非顺序的.非连续的,在逻辑顺序上其数据元素是通过指针实现的,组成链表的每一个元素也可以叫 ...

  9. 单链表插入元素 注释 c语言,数据结构之无头单链表的相关练习题——C语言实现(详细注释)...

    本文中所用到的相关链表操作实现均在我上篇博客中:https://blog..net/haoziai905/article/details/87099287 1.删除无头单链表的非尾结点 这道题的重点就 ...

最新文章

  1. JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域
  2. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....
  3. 7-69 超市促销 (6 分)
  4. matlab 自带pca函数,matlab实现主成分分析 princomp函数 PCA中有这个函数
  5. 华为会议电脑版_大家在用什么会议产品呢? 对企业的视频会议是如何规划的?...
  6. 【eclipse】Multiple annotations found at this line:——解决方法
  7. 路由器linux校园网,还在为无法突破校园网的限制而烦恼?动动手,借助路由器完成锐捷认证...
  8. Log4j.properties 属性详解以及 LOG4J日志级别详解
  9. Kafka运维大全来了!优化、监控、故障处理……
  10. CDR 制作“决战高考”海报
  11. scheme 语言概述
  12. 织梦CMS建站入门学习(一)
  13. Unity3D-设置地形
  14. Python ctypes 调用API函数模拟键盘鼠标事件
  15. Bug heroes虫虫英雄······超详细翻译+基本攻略
  16. BPDU保护与边缘端口、RLDP防环
  17. 题目描述请参照本章例题,编写一个程序,输出以下信息:************************** Very Good**********************
  18. VSTO PPT图表对象的操作(1)
  19. intel服务器最新主板芯片组,拒绝阴霾 主板芯片组如何承载时代经典
  20. javscript将时间转化为时辰输出

热门文章

  1. 精致又小巧的3款黑科技软件,一旦使用,难以割舍
  2. The Buffer Bomb
  3. 什么是linux网络驱动程序,什么是Linux网卡驱动程序?
  4. docker images 命令详解
  5. 显微镜下的白细胞 捉到一群正在撒欢de小可爱,哇哇~
  6. EASY EAI Nano人工智能开发套件免费试用啦!
  7. GO语言开山篇(二):诞生小故事
  8. c# 新中新二代身份证阅读,包含头像,支持华视
  9. 链脉吴雪:工业互联网热潮下,人工智能名片有何机会?
  10. webpack : 无法加载文件 C:\Users\zgl\AppData\Roaming\npm\webpack.ps1,因为在此系统上禁止运行脚本 。