目录
一. 单链表
- 通过链表添加/展示信息
#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