主要思路:
1,创建链表
2,判断输入的年龄是否存在,存在就删去
3,输出处理后的链表
具体处理:
1,创建链表:
链表 = 头指针 + 节点
所以先创建节点:
typedef struct node
{
int sid;
char name[20];
char sex[10];
int age;
struct node* next;
}node;
然后把节点链接起来,并且让头指针指向第一个节点,并返回头指针;
代码:
node *creatlink(int n)//n是节点个数
{
node* p = (node*)malloc(sizeof(node));//p是头指针
node* p2 = NULL;
while(n--)
{
node* q = (node*)malloc(sizeof(node));
printf("请输入节点内容(学号 姓名 性别 年龄):\n");
scanf("%d %s %s %d", &q->sid, q->name, q->sex, &q->age);
if (p2 == NULL)
{
p->next = q;
p2 = q;
}
else
{
p2->next = q;
p2 = q;
}
}
p2->next = NULL;
return p;
}
2,判断年龄是否存在:
void panduan(int ag, node* a)
{
node* q = NULL;
node* qfront = NULL;
for (q = a->next, qfront = a; q!= NULL;)
{
if (q->age == ag)
{
qfront->next = q->next;
node* t = q;
free(t);
q = q->next;
}
else
{
q = q->next;
qfront = qfront->next;
}
}
}
3,打印链表:
void printlink(node* a)
{
node* p = NULL;
for (p = a->next; p != NULL; p = p->next)
{
printf("%d %s %s %d\n", p->sid, p->name, p->sex, p->age);
}
}
完整代码:
# include "stdio.h"
# include "stdlib.h"
typedef struct node
{
int sid;
char name[20];
char sex[10];
int age;
struct node* next;
}node;
node *creatlink(int n);
void panduan(int ag, node* a);
void printlink(node *a);
int main()
{
node* a = creatlink(6);
printf("未删除前:\n");
printlink(a);
int ag;
printf("请输入一个要删除的年龄:\n") ;
scanf("%d",&ag);
panduan(ag, a);
printf("删除后:\n");
printlink(a);
return 0;
}
node *creatlink(int n)
{
node* p = (node*)malloc(sizeof(node));
node* p2 = NULL;
while(n--)
{
node* q = (node*)malloc(sizeof(node));
printf("请输入节点内容(学号 姓名 性别 年龄):\n");
scanf("%d %s %s %d", &q->sid, q->name, q->sex, &q->age);
if (p2 == NULL)
{
p->next = q;
p2 = q;
}
else
{
p2->next = q;
p2 = q;
}
}
p2->next = NULL;
return p;
}
void panduan(int ag, node* a)
{
node* q = NULL;
node* qfront = NULL;
for (q = a->next, qfront = a; q!= NULL;)
{
if (q->age == ag)
{
qfront->next = q->next;
node* t = q;
free(t);
q = q->next;
}
else
{
q = q->next;
qfront = qfront->next;
}
}
}
void printlink(node* a)
{
node* p = NULL;
for (p = a->next; p != NULL; p = p->next)
{
printf("%d %s %s %d\n", p->sid, p->name, p->sex, p->age);
}
}