大一c语言第三题编程

如题所述

#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⊙)哦

温馨提示:答案为网友推荐,仅供参考