单链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
结构体
C语言允许用户自己建立由不同类型数据组成的组合型数据结构,他们称为结构体
动态建立链表
建立动态链表是指在程序执行过程中,从无到有建立起一个链表,即一个一个地开辟结点和输入各节点的数据,并建立起前后相连的链式关系
实现代码
#include <stdio.h>
#include <stdlib.h>
struct Student
{
long num;
float score;
struct Student *next;
};
int n;
int main()
{
struct Student *create_link();
void print_link(struct Student *head);
void delete_link(struct Student *head);
void insert_link(struct Student *head);
struct Student *st;
st=create_link();
print_link(st);
delete_link(st);
insert_link(st);
return 0;
}
//创建单链表的函数
struct Student *create_link()
{
struct Student *head;
struct Student *p1,*p2;
n=0;
p1=p2=(struct Student*)malloc(sizeof(struct Student));
printf("请输入第一个学生的信息:\n");
scanf("%ld %f",&p1->num,&p1->score);
head=NULL;
//输入学号为0时结束
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct Student*)malloc(sizeof(struct Student));
printf("请输入学生的信息:\n");
scanf("%ld %f",&p1->num,&p1->score);
}
p2->next=NULL;
return head;
};
//删除节点
void delete_link(struct Student *head)
{
struct Student *pre,*p;
void print_link(struct Student *head);
long deleteNum;
printf("请输入要删除的学生编号\n");
scanf("%ld", &deleteNum);
//要删除的节点是第一个节点
if(head->num==deleteNum)
head=head->next;
else
{
pre=head;
p=head->next;
while(p!=NULL)
{
if(p->num==deleteNum)
{
if(p->next==NULL)
{
//要删除的节点是最后一个结点
pre->next=NULL;
}
else
{
pre->next=p->next;
}
break;
}
pre=p;
p=p->next;
}
}
printf("经过删除操作后,");
print_link(head);
}
//新增结点
void insert_link(struct Student *head)
{
struct Student *p,*q;
void print_link(struct Student *head);
q=(struct Student*)malloc(sizeof(struct Student));
printf("请输入要加入的学生信息");
scanf("%ld %f",&q->num,&q->score);
q->next=NULL;
for(p=head;p->next!=NULL;p=p->next)
{
;
}
p->next=q;
print_link(head);
}
//输出单链表
void print_link(struct Student *head)
{
struct Student *p;
printf("当前的学生数据为:\n");
p=head;
if(head!=NULL)
{
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
}
注:为使代码更清晰易懂,上述代码未做健壮性维护。
运行结果
参考文献
《C程序设计(第五版)》 谭浩强编著