首页 > 其他分享 >学习笔记第十六天

学习笔记第十六天

时间:2024-08-01 18:24:06浏览次数:16  
标签:Node 第十六 head struct int 笔记 next 学习 pHead

1.结构体

        1.1结构体的定义
        结构体(Struct)是C语言中一种重要的复合数据类型,允许将不同类型的数据项组合成一

个单一的类型。定义结构体使用struct关键字,其基本语法为:

struct Student

{

         成员列表;

};          //;不能省略;

        其中,结构体名是用户自定义的标识符,用于标识这个结构体类型;成员列表是结构体中包

含的一个或多个成员,每个成员可以是基本数据类型或另一个结构体类型。

        1.2结构体变量的声明和初始化
        结构体变量的声明方式:

#include<stdio.h>
#include<string.h>
struct Student
{
    int id;
    float score;
    char name[20];

};

int main(void)
{
    int i;
    struct Student s;    //struct Student s = {1,95.5,"zhangsan"};
    s.id = 1;//
    s.score = 95.5;//
    strcpy(s.name,"zhangsan");//
    printf("%d,%f,%s\n",s.id,s.score,s.name);

    return 0;
}

        1.3结构体成员的访问

        结构体成员的访问通常有两种方式:

        通过结构体变量和点运算符(.):

stu.age = 20;
printf("%d\n", stu.age);

        通过指向结构体变量的指针和箭头运算符(->):

struct Student *pstu = &stu;
pstu->age = 20;
printf("%d\n", pstu->age);


        1.4结构体对齐

        

        1、结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;

        2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必

须能够整除成员的字节数;

        3、如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;

        4、用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、2、4、8、16。

        1.5链表

        构建链表:链表是一种常见的数据结构,其节点通常使用结构体来定义,包含数据和指向下

一个节点的指针。

         示例代码,以下是一个使用结构体构建简单链表的示例代码:

#include<stdio.h>
#include<stdlib.h>
struct Node
{
    int a;
    struct Node *next;
};
void push_front(struct Node *pHead,int n)//插入链表
{
    struct Node *pNew = malloc(sizeof(struct Node));
    pNew->next=pHead->next;
    pHead->next = pNew;
    pNew->a= n;
}
void printlist(struct Node *pHead)//打印链表
{
    struct Node *p = pHead->next;
    while(p!=NULL)
    {
        printf("%d,",p->a);
        p = p->next;
    }
    printf("\b \n");
}
int size(struct Node *pHead)//有效元素
{
    int i=0;
    struct Node *p = pHead->next;
    while(p!=NULL)
    {
        ++i;
        p = p->next;
    }
    return i;
}
int isEmpty(struct Node *pHead)//判断是否是空链表;
{
    if(pHead->next == NULL)
    {
        return 1;
    }
    return 0;
}

int main(void)
{
    struct Node head= {0,NULL};
    printf("%d\n",isEmpty(&head));
    push_front(&head,1);
    push_front(&head,2);
    push_front(&head,3);
    push_front(&head,4);
    printlist(&head);
    printf("%d\n",size(&head));
    printf("%d\n",isEmpty(&head));

    return 0;
}

标签:Node,第十六,head,struct,int,笔记,next,学习,pHead
From: https://blog.csdn.net/m0_69699758/article/details/140841168

相关文章

  • 探索机器学习之美:使用Scikit-learn进行模型可视化
    探索机器学习之美:使用Scikit-learn进行模型可视化在机器学习的世界里,模型的可视化是一个强大的工具,它可以帮助我们更好地理解模型的行为和决策过程。Scikit-learn,作为Python中最受欢迎的机器学习库之一,提供了多种方法来进行模型的可视化。本文将详细介绍如何使用Scikit-lea......
  • Robot Framework 入门指南:高效学习接口自动化测试
    开源自动化测试利器:Robot FrameworkRobot Framework 是一个用于实现自动化测试和机器人流程自动化(RPA)的开放源代码框架。它由一个名为RobotFrameworkFoundation的组织得到推广,得到了多家领军企业在软件开发中的广泛应用。框架以其开放性和灵活性为特点,能够无缝整合各种......
  • Obsidian学习笔记-界面图标介绍(上)
     背景打开Obsidian,会看到界面是极简画风,初学者或许难以弄清界面边框上诸多小图标的含义,本文将详细介绍。(发现有点多,遂分量篇分享)一、功能页(左)这里用功能页代指页面左侧第一栏,这块也是Obsidian的功能标密集区。这里按照下面第一张图的划分,分区讲解。(1号下方目录上方......
  • C高级(学习)2024.8.1
    目录shell命令数组数组的赋值数组的调用遍历数组函数函数的定义方式函数调用分文件编程源文件头文件include引用时“”和<>的区别编译工具gcc编译工具gdb调试make工具定义Makefile格式Makefile管理多个文件Makefile变量自定义变量预定义变量自动变量Ma......
  • Pixel Aligned Language Models论文阅读笔记
    Motivation&Abs近年来,大语言模型在视觉方面取得了极大的进步,但其如何完成定位任务(如wordgrounding等)仍然不清楚。本文旨在设计一种模型能够将一系列点/边界框作为输入或者输出。当模型接受定位信息作为输入时,可以进行以定位为condition的captioning。当生成位置作为输出时,模型......
  • Pytorch笔记|小土堆|P1-5
    Pytorch环境安装及配置1、创建conda环境,名为pytorchcondacreate-npytorchpython=3.102、在任务管理器的性能中确认显卡,是否支持CUDA。其次,确认显卡驱动,cuda9.2支持396.26以上的驱动,可以在命令行使用nvidia-smi来看自己驱动是否满足要求,如果低于396.26,可以使用各种管家更......
  • 【笔记】杂题选讲 2024.8.1 下午
    [AGC018F]TwoTrees[AGC018F]TwoTrees-洛谷|计算机科学教育新生态(luogu.com.cn)先判一下奇偶性。考虑做一个很强的钦定,奇数都填\(\pm1\),偶数都填\(0\)。对于同一棵树的一棵子树,考虑对子树内两个奇数点做匹配,要求匹配上的点一个\(+1\)一个\(-1\),这样就能在子树的根......
  • 组合数学学习笔记(二)(2024.7.4)
    一、鸽巢原理1.鸽巢原理将\((\sum\limits_{i=1}^n{p_i})-n+1\)放入\(n\)个盒子,一定存在一个盒子\(i\),使得第\(i\)个盒子至少装了\(p_i\)个物品。练习一有十个数\(a_1,a_2\dotsa_{10}\)满足\(\forall_{1\leqi\leq10}{1\leqa_i\leq60}\),证明能够从\(a_i\)中挑......
  • 机器学习-算法分类以及用途
    1.监督学习算法线性回归(LinearRegression)目的:用于预测一个或多个自变量(X)与因变量(Y)之间的线性关系。应用领域:房价预测、销售预测、温度预测等连续值预测问题。逻辑回归(LogisticRegression)目的:虽然名为回归,但实际上是用于二分类问题的分类算法。应用领域:垃圾邮件识别、......
  • 多项式学习笔记(一)(2024.7.6)
    声明:在本节范围内,所有同余号(多项式运算)均在\((\text{mod}x^n)\)意义下进行;所有等号(代数运算)均在模某个质数\(p\)意义下进行。暴力多项式计算加法\(H(x)=F(x)+G(x)\),求\(H(x)\)解:类比高精度加法\(h_i=f_i+g_i\),复杂度\(O(n)\)#include<bits/stdc++.h>usingnames......