C语言的链表的相关操作

news2024/11/24 17:42:20

本变博客源于自己想复习一下C语言,所以便自己动手复习了一下链表的相关操作。做个人记录使用。
main.c

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

int main()
{
  student *a;
   printf("hello world\n") ;
   printf("----初始化列表----------\n");
   a=init();
   printf("----创建列表----------\n");
   create_front_list(a,3);
   printf("list的个数为:count= %d\n",count);
    printf("----读取列表3位置上数据----------\n");
   read_any_list(a,3);
   printf("------------读取全部数据------------------\n");
   read_all_list(a);
   printf("----------插入列表,插入到位4的后面--------------------\n");
   insert_behind_list(a ,4);
   printf("----------插完后的列表数据---------\n");
   read_all_list(a);
   printf("------------删除列表指定位置的数据-------------------\n");
   delete_list(a,2);
   printf("-------------删除后列表的数据------------------\n");
   read_all_list(a);
   return 0;
}

list.c

#include<stdio.h>
#include <stdlib.h>
#include "list.h"
int count = 0;
student *init()
{

    //chuangjian节点

   student * head=(struct student *)malloc(sizeof(student));
    if(head==NULL)
    {
        printf("n=malloc failed \n");
        return NULL;
    }
    head->num=0;
    head->score=99.2;
    head->next=NULL;
    count++;
    return head;

}

//链表的建立
void create_front_list(student *head,int n)
{   int i;
    student * last;
    student * s;
    last=head;
    s=head;
    printf("请你输入%d个整数\n",n);
    for(i=0;i<n;i++)
    {
        printf("begin to input\n");
        s->next=(struct student *)malloc(sizeof(student));
        last=s->next;
        s=last;
        scanf("%d,%f",&(s->num),&(s->score));
        printf("end to input\n");
        count++;
    }
    s->next=NULL;
    last=NULL;
    s=NULL;
    return ;
}

//链表的读取操作
void read_all_list(student * head)
{
    int i;

    printf("total data in list is \n");
    student *re=head;

   if(head==NULL)
    {
        printf("NO data\n");
       return ;
    }

    else
    {
       for(i=0;i<count;i++)
    {
        printf("num = %d  score= %f \n",re->num, re->score);
        re=re->next;
    }
      }


}

//读取其中指定第几个节点的数值
void read_any_list(student * head,int n)
{  int i=1;

   student *re=head;
   printf("That you want to read list sequence is  %d\n",n);
   if(n>count)
   {
        printf("The number you have input exceeds the max length of this list \n ");
        return ;
   }
    else
    {
     while(true)
       {
           re=re->next;
            i++;
       if(i==n)
       {
           printf("the number has been find ,data as follow \n");
           printf("num= %d, score= %f\n",re->num,re->score);
           break;
       }
       }

        return ;
    }

}

//链表的插入

//由于是单链表所以我这里只使用尾部
void insert_behind_list(student * head ,int n)
{
  printf("insert behind list \n\n");
  int i;
  student * s=head;

  if(n>count)
  {
      //表名插入的位置已经查过了节点长度
      printf("you has exceed this max length\n");
      return ;

  }
    else
    {    //开辟一个新的节点
         student * last=(struct student *)malloc(sizeof(student));
         printf("please input your inserted data \n");
         scanf("%d,%f",&(last->num),&(last->score));

         for(i=1;i<n;i++)
         {

             s=s->next;//借助一个指针指向你想插入的节点前面
         }
         last->next=s->next;
         s->next=last;
         last=NULL;
    printf("---------end of insert data--------\n");
    count++;

    }

}


//链表的删除
void delete_list(student * head,int n)
{
    int i;
    student * s=head;
    student * q=head->next;
    printf("the number do you want to delete is number %d",n);
    if(n>count)
    {
        printf("there are no data \n");
    }
    else
    {

        for(i=1;i<n;i++)
        {
            s=s->next;
            q=q->next;

        }
        printf("你想删除的数据是:%d,%f",q->num,q->score);
        s->next=q->next;
        free(q);
        count--;//记录节点的个数的

    }

}

list.h

#define true 1
#define flase 0


 typedef struct student{
 int num;
 float score;
 struct student *next ;

 }student;
extern int count;
student *init();
void create_front_list(student *head,int n);
void read_all_list(student * head);
void read_any_list(student * head,int n);
void insert_behind_list(student * head ,int n);
void delete_list(student * head,int n);



备注:每次更改操作后必须使用count–,否则内存就会出现泄漏。

hello world
----初始化列表----------
----创建列表----------
请你输入3个整数
begin to input
1,1
end to input
begin to input
2,2
end to input
begin to input
3,3
end to input
list的个数为:count= 4
----读取列表3位置上数据----------
That you want to read list sequence is 3
the number has been find ,data as follow
num= 2, score= 2.000000
------------读取全部数据------------------
total data in list is
num = 0 score= 99.199997
num = 1 score= 1.000000
num = 2 score= 2.000000
num = 3 score= 3.000000
----------插入列表,插入到位4的后面--------------------
insert behind list

please input your inserted data
4,4
---------end of insert data--------
----------插完后的列表数据---------
total data in list is
num = 0 score= 99.199997
num = 1 score= 1.000000
num = 2 score= 2.000000
num = 3 score= 3.000000
num = 4 score= 4.000000
------------删除列表指定位置的数据-------------------
the number do you want to delete is number 2你想删除的数据是:2,2.000000-------------删除后列表的数据------------------
total data in list is
num = 0 score= 99.199997
num = 1 score= 1.000000
num = 3 score= 3.000000
num = 4 score= 4.000000

Process returned 0 (0x0) execution time : 27.276 s
Press any key to continue.


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阻塞队列的安全实现,定时器的安全实现(面试易考),超详细

一、&#x1f49b; 如何实现一个线程安全的阻塞队列 目前&#xff0c;当前代码是循环队列&#xff08;还没有进行改动&#xff09; head和tail的判空判断满两种方法: 1.浪费一个格子&#xff0c;当前走到head的前一个位置&#xff0c;就认为队列满的 2.单独搞一个变量&#xff…

【分布式系统】聊聊分布式事务中原子性

什么是分布式事务 在分布式系统中&#xff0c;一个是计算问题&#xff0c;也就是将多个任务&#xff0c;通过流控技术把不同的流量分发给不同的服务器进行处理。另一个就是存储&#xff0c;而只要设计的存储&#xff0c;就必然会引入从单体事务中衍生除的分布式事务问题。 事务…

css flex 上下结构布局

display: flex; flex-flow: column; justify-content: space-between;

战略方法论

父文章 人人都是战略家 2018年注册会计师公司战略与风险考点:swot分析_知识点_注册会计师 SWOT分析 一、基本原理 所谓SWOT分析&#xff0c;即基于内外部竞争环境和竞争条件下的态势分析&#xff0c;就是将与研究对象密切相关的各种主要内部优势、劣势和外部的机会和威胁等…

提高WordPress网站性能的24个技巧

你想加速你的WordPress网站吗&#xff1f;快速加载页面可改善用户体验、增加页面浏览量并帮助你优化WordPress SEO。在本文中&#xff0c;我们将分享最有用的WordPress网站性能速度优化技巧&#xff0c;以提高WordPress网站性能并加快你的网站速度。 与其他“X 优秀的 WordPres…

redis学习笔记(九)

文章目录 python对redis基本操作&#xff08;1&#xff09;连接redis&#xff08;2&#xff09;数据类型操作 python对redis基本操作 &#xff08;1&#xff09;连接redis # 方式1 import redisr redis.Redis(host127.0.0.1, port6379) r.set(foo, Bar) print(r.get(foo))# …

Xilinx DDR3学习总结——1、MIG核设置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx DDR3学习总结——1、MIG核设置 前言开发板 DDR信息MIG 设置前言 话说之前从来没有使用过DDR,工作中的项目都是流式处理的,没有一个大存储的需求,应该图像处理中DDR用的会比较多一些,但是一个这么…

SpringBoot05--axios网络请求

浏览器主动发送请求&#xff0c;服务器接收请求之后返回数据&#xff0c;通过vue进行数据绑定 请求成功&#xff0c;返回的数据会包装到response里面去&#xff08;返回成response的data属性&#xff09; 好的这边不太懂 在xxx.vue组件被创建和挂载&#xff08;渲染&#xff09…

在idea运行python文件

在idea运行python文件 如果在idea运行python文件而没有弹出run的选项&#xff0c;则点击File->Settings…->Plugins&#xff0c;在里面搜索python&#xff0c;如果没有显示则在Maketplace进行搜索&#xff0c; 接着Install&#xff0c;然后restart

C++ STL list

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C之 STL list介绍和模拟实现 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;上次我们详细的介绍了vector&#xff0c;今天我们继续来介绍…

某大厂笔试(小*的车站的最近距离)

有一个环形的公路&#xff0c;上面共有n站&#xff0c;现在给定了顺时针第i站到第i1站之间的距离&#xff08;特殊的&#xff0c;也给出了第n站到第1站的距离&#xff09;&#xff0c;小*想着沿着公路第x站走到第y站&#xff0c;她想知道最短的距离是多少&#xff1f; 输入描述…

无涯教程-Perl - print函数

描述 此函数将LIST中的表达式的值打印到当前的默认输出文件句柄或FILEHANDLE指定的句柄中。 如果设置,则$\变量将添加到LIST的末尾。 如果LIST为空,则打印$_中的值。 print接受一个值列表,列表中的每个元素都将被解释为一个表达式。 语法 以下是此函数的简单语法- print…

谷歌发布多平台应用开发神器:背靠 AI 编程神器 Codey,支持 React、Vue 等框架,还能代码补全

一、概述 8 月 8 日&#xff0c;谷歌宣布推出 AI 代码编辑器 IDX&#xff0c;旨在提供基于浏览器的人工智能开发环境&#xff0c;用于构建全栈网络和多平台应用程序。谷歌在创建 IDX 时并没有构建新的 IDE&#xff08;集成开发环境&#xff09;&#xff0c;而是使用 VS Code 作…

网络安全(黑客)自学路线/笔记

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

代码随想录算法训练营第55天|动态规划part12|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、总结

代码随想录算法训练营第55天&#xff5c;动态规划part12&#xff5c;309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、总结 309.最佳买卖股票时机含冷冻期 309.最佳买卖股票时机含冷冻期 思路&#xff1a; 区别在第i天持有股票的当天买入的情况&#xff0c…

【Kubernetes】神乎其技的K8s到底是什么,为什么被越来越多人使用

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

户外骨传导耳机推荐,盘点最适合户外佩戴的五款耳机

现在天气越来越暖和了&#xff0c;很多人选择外出徒步、越野或者骑行&#xff0c;在这些活动中往往都会搭配一个骨传导耳机&#xff0c;来让运动过程变得更加有趣。在选购骨传导耳机时&#xff0c;人们通常会考虑音质、舒适性、价格等因素&#xff0c;为了让大家选到更适合自己…

Kafka API与SpringBoot调用

文章目录 首先需要命令行创建一个名为cities的主题&#xff0c;并且创建该主题的订阅者。 1、使用Kafka原生API1.1、创建spring工程1.2、创建发布者1.3、对生产者的优化1.4、批量发送消息1.5、创建消费者组1.6 消费者同步手动提交1.7、消费者异步手动提交1.8、消费者同异步手动…

yolov5目标检测多线程Qt界面

上一篇文章&#xff1a;yolov5目标检测多线程C部署 V1 基本功能实现 mainwindow.h #pragma once#include <iostream>#include <QMainWindow> #include <QFileDialog> #include <QThread>#include <opencv2/opencv.hpp>#include "yolov5.…

phpspreadsheet excel导入导出

单个sheet页Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。Excel2003的最大列数是256列&#xff0c;2007以上版本是16384列。 xlswriter xlswriter - PHP 高性能 Excel 扩展&#xff0c;功能类似phpspreadsheet。它能够处理非常大的文件&#xff0…