链表初识
来源:互联网 发布:手机mac地址修改软件 编辑:程序博客网 时间:2024/06/01 22:30
//链表
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct Student{
int id;
char name[20];
int score;
struct Student *next;
}Stud,*Stu;
//head是一个带头节点的链表
void insert(Stu head);
void del(Stu head,int id);
void print(Stu head);
int main()
{
Stu s1=(Stu)malloc(sizeof(Stud));//头指针
s1->next=NULL;
s1->id=0;//借用来表示链表的节点个数
for(int i=0;i<3;i++) insert(s1);
print(s1);
printf("请输入要删除的学生学号:");
int id;
scanf("%d",&id);
del(s1,id);
print(s1);
return 0;
}
void insert(Stu head)
{
printf("请输入学号 姓名 成绩:");
Stu q=(Stu)malloc(sizeof(Stud));
scanf("%d %s %d",&q->id,q->name,&q->score);
q->next=head->next;
head->next=q;
head->id++;
}
//head是一个带头节点的链表,id是要删除节点的学号
void del(Stu head,int id)
{
Stu p=head;
while(p->next!=NULL)
{
if (p->id==id)
{
Stu q=head->next;
head->next=p->next;
free(q);
break;
}
else if(p->next->id==id)
{
Stu q=p->next;
p->next=p->next->next;
free(q);
head->id--;
break;
}
p=p->next;
}
}
//输出链表数据
void print(Stu head)
{
Stu p=head;
printf("链表共有%d个节点\n",head->id);
while(p->next!=NULL)
{
printf("学号%d,姓名%s,成绩%d\n",p->next->id,p->next->name,p->next->score);
p=p->next;
}
}
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct Student{
int id;
char name[20];
int score;
struct Student *next;
}Stud,*Stu;
//head是一个带头节点的链表
void insert(Stu head);
void del(Stu head,int id);
void print(Stu head);
int main()
{
Stu s1=(Stu)malloc(sizeof(Stud));//头指针
s1->next=NULL;
s1->id=0;//借用来表示链表的节点个数
for(int i=0;i<3;i++) insert(s1);
print(s1);
printf("请输入要删除的学生学号:");
int id;
scanf("%d",&id);
del(s1,id);
print(s1);
return 0;
}
void insert(Stu head)
{
printf("请输入学号 姓名 成绩:");
Stu q=(Stu)malloc(sizeof(Stud));
scanf("%d %s %d",&q->id,q->name,&q->score);
q->next=head->next;
head->next=q;
head->id++;
}
//head是一个带头节点的链表,id是要删除节点的学号
void del(Stu head,int id)
{
Stu p=head;
while(p->next!=NULL)
{
if (p->id==id)
{
Stu q=head->next;
head->next=p->next;
free(q);
break;
}
else if(p->next->id==id)
{
Stu q=p->next;
p->next=p->next->next;
free(q);
head->id--;
break;
}
p=p->next;
}
}
//输出链表数据
void print(Stu head)
{
Stu p=head;
printf("链表共有%d个节点\n",head->id);
while(p->next!=NULL)
{
printf("学号%d,姓名%s,成绩%d\n",p->next->id,p->next->name,p->next->score);
p=p->next;
}
}
0 0
- 初识内核链表
- 初识链表
- 链表初识
- 链表的初识
- C++:链表(初识链表)
- 初识C语言的链表
- javascript原型链初识
- 初识区块链
- 区块链初识
- 区块链初识
- 初识线性表
- 初识数据库分表
- 表连接初识
- 表连接初识
- 初识CSS样式表
- 初识线性表
- 初识
- 初识
- Spring装配-Java配置
- this、super、final关键字(以及final修饰基本数据类型和引用类型的区别)
- Java基础知识点
- Oracle_PL/SQl_基本语法
- 重新认识HTML中的p标签
- 链表初识
- Java面试题之Integer
- 利用a、s、w、d来控制移动 按下空格会发射子弹 最简单的语法用心编写也会有好的程序
- redis安装和安装时候的错误
- 理解动态规划——01背包问题
- 今天开通了CSDN博客
- 分布式跟踪系统(一):Zipkin的背景和设计
- [bigdata-046] eclipse+spring开发web然后部署到tomcat
- 华为OJ:翻转字符串