首页 > 试题广场 >

建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个

[问答题]

建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表

中的结点所包含的年龄等于此年龄,则将此结点删去。

推荐

#include<stdio.h>

#include<malloc.h>

#define LEN sizeof(struct student)

struct student

{  char num[6];

char name[8];

char sex[2];

int age;

struct student *next;

}stu[10];


int main()

{ struct student *p,*pt,*head;

int i,length,iage,flag=1;

int find=0;                   //找到待删除元素find=1,否则find=0

while(flag==1)

{printf("input length of list(<10):”);

scanf("%d",&length);

if(length<10)

flag=0;

}


//建立链表

for(i=0;i<length;i++)

{p=(struct student *)malloc(LEN);

if(i==0)

Head=pt=p;

else

pt->next=p;

pt=p;

printf("NO.:");

scanf("%s",p->num);

printf("name:");

scanf("%s",p->name);

printf("sex:");

scanf("%s",p->sex);

printf("age:");

scanf("%d",&p->age);

}

p->next=NULL;

p=head;

printf("\nNO.  name  sex  age\n');                 //显示

while(p!=NULL)

{printf("%4s%8s%6s%6d\n",p->num,p->name,p->sex,p->age);

p=p->next;

}


∥删除

printf("input age:");             //输入待删年龄

scanf("%d",&iage);

pt=head;

p=pt;

if(pt->age==iage)                 //链头是待删元素

{p=pt->next;

head=pt=p;

find=1;

}

else                        //链头不是待删元素

pt=pt->next;

while(pt!=NULL)

{if(pt>age==iage)

{p->next=pt->next;

find=1;

}

else                           //中间结点不是待删元素

p=pt;

pt=pt->next;

}

if(!find)

printf("not found  %d.",iage);


p=head;

printf("\nNO. name  sex  age\n”);          ∥显示结果

while(p!=NULL)

{printf("%4s%8s",p->num,p->name);

printf("%6s%6d\n",p->sex,p->age);

p=p->next;

}

return 0;

}


发表于 2018-03-25 10:26:43 回复(0)