c语言链表建立

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:02:31
1)创建一个链表;void create(),有两种方式,
1) 可以从键盘上接收数据创建一个链表,
2) 也可以从一个文件中读取数据,创建一个链表。 (文件中内容格式自己定)
例如,可以是:
20072308 张三 45 87 98
20072308 李四 67 83 90

(2)输出一个链表;void output( )

(3)删除一个节点信息,当输入一个学生学号,如果链表中存在该学号的的结点,则显示此结点的数据,否则输出没有该学号的结点。void delete_()

(4)追加一个学生节点,void append()
可以有两种方式:
1) 在链表头节点后面追加一个节点;
2) 也可以在链表尾追加一个节点;

(5)链表查询,当输入一个学生学号,如果链表中存在该学号的的结点,则输出该结点信息,否则显示链表中没有该学号的结点。void query()
(6)链表信息保存到文件中。void save()

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
typedef struct
{
char sno[10];
char name[10];
float score[3];
}Student;

typedef struct node
{
Student data;
struct node *next;
}LinkList;

Student s;
LinkList *head=NULL;
LinkList *last=NULL;

void Create(Student s)
{
LinkList *p;
p=(LinkList*)malloc(sizeof(LinkList));
p->data=s;
p->next=NULL;
if(head!=NULL)
{
last->next=p;
last=p;
}
else
{
head=p;
last=p;
}
}
void OutPut()
{
LinkList *p;
p=head;
while(p!=NULL)
{
printf("\n%5s%5s%5.1f%5.1f%5.1f",p->data.sno,p->data.name,p->data.score[0],p->data.score[1],p->data.score[2]);
p=p->next;
}
}
void Delete(LinkList *p) //*p 是要删除的节点