#include <stdio.h>
#include <stdlib.h>
typedef struct node //定义结点//
{
long ID;
char Name[10];
char sex;
int age;
struct node *next;
}NODE;
NODE *create(int n) //创建链表//
{
NODE *s,*head=NULL,*r=NULL;
int i;
for(i=0;i<n;i++)
{
s=(NODE *)malloc(sizeof(NODE));
printf("\n输入学号:");
scanf("%ld",&s->ID);
getchar();
printf("\n输入姓名:");
scanf("%s",s->Name);
getchar();
printf("\n输入性别(M/W):");
scanf("%c",&s->sex);
getchar();
printf("\n输入年龄:");
scanf("%d",&s->age);
getchar();
s->next=NULL;
if(head==NULL)
{
head=s;
r=s;
}
else
{
r->next=s;
r=s;
}
}
return head;
}
//删除查找年龄的学生数据。//
NODE *Delete (NODE *head,int age)
{
NODE *q=head,*p=NULL,*p2=NULL;
int t=1;
//找到那个年龄的结点//
while(q!=NULL)
{
if(q->age==age)
{
t=0;
p=q;
q=q->next;
if(p==head)
{
head=p->next;
}
else
{
p2=head;
while(p2->next!=p)
p2=p2->next;
p2->next=p->next;
}
free(p);
}
else
q=q->next;
}
if(t)
{
printf("\n没有该节点!");
}
return head;
}
void print(NODE *p)
{
printf("学号------姓名---性别---年龄:\n");
while(p!=NULL)
{
printf("%-8d%5s%6c%8d\n",p->ID
,p->Name
,p->sex
,p->age);
p=p->next;
}
}
main()
{
int age,n;
NODE *head=NULL;
printf("\n请输入学生数:");
scanf("%d",&n);
getchar();
head=create(n);
print(head);
printf("\n请输入要删除的年龄:");
scanf("%d",&age);
getchar();
head=Delete(head,age);
printf("\nAfter\n");
print(head);
return 0;
}
追问目测金陵科技学院。。
追答你是大一的?
加我QQ吧
707535808
追问。。。(⊙o⊙)哇
追答记得署名哈
追问(⊙o⊙)哦