DD不是monkey 2021-04-04 14:27 采纳率: 0%
浏览 40

vs2015C语言删除链表中指定工资的所有结点

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
	char name[20];
	int salary;
	struct empNode *next;
}empNode;
int size = sizeof(empNode);
empNode *delList(empNode *list);
void main()
{	
	empNode *list, *p = NULL, *q = NULL;
	char name[20];
	int num = 0, add = 0, salary, n = 0;
	list = NULL;
	printf("请输入姓名和工资(工资输入0,结束输入):\n");
	scanf("%s%d", name, &salary);
	while (salary != 0)
	{
		n++;
		p = (struct empNode*)malloc(size);
		strcpy(p->name, name);
		p->salary = salary;
		p->next = NULL;
		if (n == 1)list = p;
		else q->next = p;
		q = p;
		scanf("%s%d", name, &salary);
	}
	
	list=delList(list);
	p = list;
	printf("删除后的链表信息为:\n");
	while (p != NULL)
	{
		printf("%s %d\n", p->name, p->salary);
		p = p->next;
	}
}
empNode *delList(empNode *list)
{
	int delsalary;
	printf("请输入要删除的工资:");
	scanf("%d", &delsalary);
	empNode *p = list, *del = NULL;
	while (p != NULL)
	{
		if (list->salary == delsalary)
		{
			list = list->next;
			p = list;
		}
		else if (p->next == delsalary)
		{
			del = p->next;
			p->next = del->next;
			free(del);
		}
		p = p->next;
	}
	return list;
}

为什么结果还是原来的链表?

 

  • 写回答

6条回答 默认 最新

  • 关注

    把要删除节点的前一个节点的next 设置为要删除节点的next 节点,循环处理就可以了。

    评论

报告相同问题?

悬赏问题

  • ¥50 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥50 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题
  • ¥20 vue+UEditor附件上传问题
  • ¥15 想做个WPS的自动化代码,不知道能做的起不。
  • ¥15 uniApp,生成安卓安卓包后,黑暗主题中间内容不生效,底部导航正常