首页 > 其他分享 >01-链表

01-链表

时间:2024-01-13 22:55:41浏览次数:22  
标签:Node 01 List list next 链表 printf data

目录

一. 单链表

  1. 通过链表添加/展示信息
#include <stdio.h>
#include <stdlib.h>

/*
链表结构体:
data: 表示学生成绩
next: 学生成绩结构体指针
*/
typedef struct Node_Student
{
    int data;
    struct Node_Student* next;   //这里不能直接写Node, 虽然前面有typedef但是重新还不知道后面有定义Node. 也不能写Struct Node
}Node;

/*
初始化一个链表头节点
*/
Node* InitHead()
{
    Node* list = (Node*)malloc(sizeof(Node)); 
    list -> data = 0;
    list -> next = NULL;
    return list;
}

/*
添加链表节点
*/
void Add_List_Head(Node* list, int data)
{
    Node* node = (Node*)malloc(sizeof(Node));
    node -> data = data;
    node -> next = list -> next;
    list -> next = node;
    list -> data ++;
}

/*
展示全部节点信息
*/
void Show_List_Func(Node* list)
{
    while(list -> next)
    {
        list = list -> next;
        printf("data: %d \n", list -> data);
    }
}

/*
功能菜单
*/
void Menu_Func(Node* list)
{
	int select = 0;
	int data = 0;
	printf("**********1. 输入1添加学生成绩**********\n");
	printf("**********2. 输入2显示学生成绩**********\n");
	printf("**********3. 输入3清除屏幕信息**********\n");
	printf("**********4. 输入4退出学生系统**********\n");
	printf("请输入对应选项: ");
	scanf("%d", &select);
	printf("\n");
	switch(select)
	{
		case 1:
			printf("请输入学生成绩: ");
			scanf("%d", &data); //!!!这里如果是写data程序就会卡住, 但是不报错.
			printf("\n");
			Add_List_Head(list, data);
			break;
		case 2:
			Show_List_Func(list);
			break;
		case 3:
		     system("cls");
			break;
		case 4:
		    exit(0);
		    break;
		default:
			break;
	}
}

int main()
{
    Node* list = InitHead();
    Add_List_Head(list, 25);
    Add_List_Head(list, 89);
    
    //Show_List_Func(list);
	
	while(1){
		Menu_Func(list);
	}
    return 0;
}

标签:Node,01,List,list,next,链表,printf,data
From: https://www.cnblogs.com/Deng-S/p/17963163

相关文章

  • ARC151C 01 Game
    ARC151C01Game题目链接:ARC151C01Game\(SG\)函数好题。思路考虑把原问题分成多个区间的不同问题,求\(SG\)在异或起来。设:1.\(SG_1(len)\)长度为\(len\),边界没有数字。2.\(SG_2(len)\)长度为\(len\),只有一个边界有数字。3.\(SG_3(len)\)长度为\(len\),两个边界都......
  • [POI2011] INS-Inspection
    分析看到标签里写的dp,想了想可能是换根,但我不会,怎么办呢?考虑什么时候会是\(-1\)。观察样例发现,只有行动中心为\(2\)的时候才不是\(-1\),而\(2\)恰好是树的重心,那么猜想只有重心才不是\(-1\),接下来证明它。如果一个点不是重心,那么说明至少存在其中一个子树\(T'\)大小大......
  • CF1201C - Maximum Median
    思路二分答案。对于一个mid,查询中位数要是为mid的话至少要做多少次操作,最小操作次数就是排序后从中位数开始计算max(0,mid-v[i])的和ac代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;consti64inf=8e18;typedefpair<int,int>pii;cons......
  • P5321 [BJOI2019] 送别 题解--zhengjun
    由于大家的做法需要大量分类讨论和代码量,这里提供一种不怎么分类的,容易实现的做法。首先,由于墙体会随时变化,所以直接对墙体本身维护不是很方便。我们可以牺牲一点常数,对\((i,j)\)建立四个点\(UL_{i,j},UR_{i,j},DL_{i,j},DR_{i,j}\)分别表示\((i-\varepsilon,j-\varepsilo......
  • [GXYCTF2019]BabySQli
    [GXYCTF2019]BabySQli打开是一个登录页面任意输入账号密码提示wronguser输入admin提示wrongpass,说明有admin的账号并且在页面源代码中发现一串经过编码后的字符串经过base32和base64解码后得到SQL语句使用万能密码进行尝试,得到donothackme!的结果根据源码提示,我......
  • NUS CS1101S:SICP JavaScript 描述:四、元语言抽象
    原文:4MetalinguisticAbstraction译者:飞龙协议:CCBY-NC-SA4.0...魔法就在于文字——Abracadabra,开门,以及其他——但一个故事中的魔法词在另一个故事中并不神奇。真正的魔法是理解哪些词起作用,何时起作用,以及为什么起作用;诀窍就是学会这个诀窍。...而这些词是由我们字母表......
  • NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算
    原文:5ComputingwithRegisterMachines译者:飞龙协议:CCBY-NC-SA4.0我的目标是表明天堂机器不是一种神圣的生命体,而是一种钟表(相信钟表有灵魂属性的人将制造者的荣耀归功于作品),因为几乎所有多种运动都是由一种最简单和物质力量引起的,就像钟表的所有运动都是由单一重力引起......
  • NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢
    前言原文:Foreword译者:飞龙协议:CCBY-NC-SA4.0我有幸在我还是学生的时候见到了了不起的AlanPerlis,并和他交谈了几次。他和我共同深爱和尊重两种非常不同的编程语言:Lisp和APL。跟随他的脚步是一项艰巨的任务,尽管他开辟了一条优秀的道路。尽管如此,我想重新审视他在这本书......
  • NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态
    原文:3Modularity,Objects,andState译者:飞龙协议:CCBY-NC-SA4.0变化中安宁(即使它在变化,它仍然保持不变。)——赫拉克利特变化越大,越是相同。——阿方斯·卡尔前面的章节介绍了构成程序的基本元素。我们看到了原始函数和原始数据是如何组合成复合实体的,我们也了解......
  • 01_STM32简介
    STM32简介简介ARMSTM32F103C8T6片上资源/外设命名规则系统结构引脚定义启动配置最小系统电路......