版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88094444
注意
输出节点时要分开输出,否则容易出现非法字符
p1 = head->next;
while(p1){
printf("%ld ",p1->num);
printf("%s ",p1->name);
printf("%s ",p1->sex);
printf("%d\n",p1->age);
p1 = p1->next;
}
题目
建立链表,删除和输入年龄相同的节点
代码
#include <stdio.h>
#include <malloc.h>
#define Len sizeof(Node)
typedef struct Node {
long num;
char name[20];
char sex[4];
int age;
struct Node *next;
}*Linklist,Node;
int main() {
Linklist head,p1,p2;
int i,age;
//head为头结点
head = (Linklist)malloc(Len);
head->next = NULL;
p2 = head;
//输入3个节点
for(i=1; i<4; i++) {
p1 = (Linklist)malloc(Len);
scanf("%ld",&p1->num);
scanf("%s",&p1->name);
scanf("%s",&p1->sex);
scanf("%d",&p1->age);
//尾插法建立链表
p2->next = p1;
p2 = p1;
}
p2->next = NULL;
//删除和输入年龄相同的节点
printf("请输入一个年龄:");
scanf("%d",&age);
p1 = head;
while(p1->next) {
p2 = p1->next;
if(p2->age==age){
p1->next = p2->next;
free(p2);
}
else p1 = p2;
}
//输出节点时要分开输出,否则容易出现非法字符
p1 = head->next;
while(p1){
printf("%ld ",p1->num);
printf("%s ",p1->name);
printf("%s ",p1->sex);
printf("%d\n",p1->age);
p1 = p1->next;
}
return 0;
}