#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
const int N=100;
const int Length=2;
typedef struct Node
{
char name[N];
int Number;
float Score;
struct Node *pNext;
}Node,*PNode;
PNode CreatList(int n);
void PrintList(PNode haed);
void DeleteList(PNode head,int i);
void AddList(PNode head,int i,char name[],int Number,float Score);
void CheckList(PNode head);
#include"student.h"
PNode CreatList(int n) //创建链表
{
int i;
PNode head;
PNode p,q;
head=(PNode )malloc(sizeof(Node));
head->pNext=NULL;
q=head;
for(i=0;i<n;i++)
{
printf("第%d个学生",i);
printf("请输入学生姓名:学号:成绩:\n");
p=(PNode)malloc(sizeof(Node));
scanf("%s%d%d",&p->name,&p->Number,&p->Score);
q->pNext=p;
q=p;
p->pNext=NULL;
}
printf("\n");
return head;
}
void PrintList(PNode head) //输出链表
{
PNode p;
p=head->pNext;
printf("输出学生姓名\t学号\t成绩\n");
while(p!=NULL)
{
printf("\t%s\t%d\t%d\n",p->name,p->Number,p->Score);
p=p->pNext;
}
}
void DeleteList(PNode head,int i) //删除链表
{
int j=0;
PNode p,q;
p=head;
while(j<i-1)
{
p=p->pNext;
j++;
}
q=p->pNext;
p->pNext=q->pNext;
free(q);
q=NULL;
}
void AddList(PNode head,int i,char name[],int Number,float Score) //增加链表
{
int j;
PNode p,q;
p=(PNode)malloc(sizeof(Node));
p=head;
for(j=0;j<i-1;j++)
{
p=p->pNext;
}
q=(PNode)malloc(sizeof(Node));
strcpy(q->name,name);
q->Number=Number;
q->Score=Score;
q->pNext=p->pNext;
p->pNext=q;
}
void CheckList(PNode head)//检查链表
{
char Name[100];
PNode p;
p=head;
if(p==NULL)
{
printf("链表为空\n");
exit(-1);
}
scanf("%s",&Name);
if(strcmp(p->name,Name)==NULL)
{
printf("查找成功!并输出\n");
printf("%5s%5d%5.2f",p->name,p->Number,p->Score);
}
}
#include"student.h"
int main()
{
char ch;
PNode p;
p=CreatList(Length);
getchar();
ch=getchar();
switch(ch)
{
case '1':PrintList(p);break;
case '2':AddList(p,2,"zhoufei",70,90);PrintList(p);break;
case '3':DeleteList(p,2);PrintList(p);break;
case '4':CheckList(p);break;
}
return 0;
}
链表的插入 删除 查找的实现
最新推荐文章于 2022-12-10 11:45:22 发布