if (strcmp(p->data.name, find) == 0)
时间: 2024-02-09 09:07:31 浏览: 34
这行代码表示判断当前节点的数据中的姓名是否与指定的姓名相等。
在程序中,我们通常需要对数据进行比较,例如查找特定的数据信息、排序等。而 "if (strcmp(p->data.name, find) == 0)" 就是一条用于比较字符串的语句。其中 `p` 是一个指针变量,用于指向当前节点,而 `find` 则是一个指定的字符串,用于与当前节点的数据进行比较。
在这个语句中,使用了 `strcmp` 函数来比较两个字符串是否相等。如果当前节点的数据中的姓名与指定的姓名相等,那么 `strcmp(p->data.name, find)` 的返回值就为 0,表示两个字符串相等。如果不相等,则返回一个非零的值。
通过这个语句,我们可以判断当前节点的数据中的姓名是否与指定的姓名相等,从而实现查找指定员工信息的功能。需要注意的是,在比较字符串时,需要使用 `strcmp` 函数,而不能直接使用 `==` 运算符,因为字符串是一个字符数组,在 C 语言中不能直接进行比较。
相关问题
//修改员工信息函数 int change(Node *worker) { Node *p; char find[20]; p = worker->next; if (p == NULL) { printf("\n提示:没有资料可以修改!\n"); return 0; } printf("请输入要修改的员工号"); scanf("%s", find); while (p != NULL) { if (strcmp(p->data.jobNo, find) == 0) { break; } p = p->next; } if (p!=NULL) { int x; while (1) { printf("完成修改请输入0,否则输入非0数字进行修改!"); scanf("%d", &x); if (x == 0) { break; } printf(" 请输入新员工号: "); scanf("%s", p->data.jobNo); printf(" 请输入新员工姓名: "); scanf("%s", p->data.name); printf(" 请输入新员工性别: "); scanf("%s", p->data.sex); printf(" 请输入新员工出生年月: "); scanf("%s", p->data.birthday); printf(" 请输入新员工职务: "); scanf("%s", p->data.position); printf(" 请输入新员工工资: "); scanf("%s", p->data.salary); printf(" \n提示:该职工资料已经修改!\n "); } } else printf("\n提示:没有你要修改的资料!\n "); }
这段代码是一个修改员工信息的函数,它首先检查链表中是否有员工信息,如果没有则提示没有资料可以修改,如果有,则要求输入要修改的员工号。然后遍历链表,查找该员工号对应的节点,如果找到了,则进入一个循环,要求输入要修改的信息,直到输入0为止,输入的非0数字将被认为是要修改的信息。如果输入的0,则退出循环,提示该职工资料已经修改。如果没有找到对应的员工号,则提示没有你要修改的资料。
用c语言1.基于邻接表构建三国人物关系图,并能输出展示邻接表,保存在文件”TRKGraph.txt”中。文件格式如下: 刘备-->张飞--->关羽--->赵云 注意:图的构建,应该先整理图中的顶点数据,即要整理所有三国人物数据作为图顶点。
好的,以下是基于邻接表构建三国人物关系图的C语言代码:
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_VERTEX_NUM 100 // 顶点最大数量
// 定义三国人物结构体
struct person {
char name[20]; // 姓名
char country[20];// 所属国
};
// 定义邻接表节点结构体
struct node {
int adjvex; // 邻接点在顶点数组中的下标
int relation; // 人物之间的关系
struct node *next; // 指向下一个邻接点
};
// 定义顶点结构体
struct vertex {
struct person data; // 顶点数据
struct node *first; // 指向第一个邻接点
};
// 定义邻接表结构体
struct adj_list {
struct vertex vex[MAX_VERTEX_NUM]; // 顶点数组
int vex_num; // 顶点数量
};
// 初始化邻接表
void init_adj_list(struct adj_list *list) {
list->vex_num = 0;
for (int i = 0; i < MAX_VERTEX_NUM; i++) {
list->vex[i].first = NULL;
}
}
// 查找顶点在顶点数组中的下标
int find_index(struct adj_list *list, char *name) {
for (int i = 0; i < list->vex_num; i++) {
if (strcmp(list->vex[i].data.name, name) == 0) {
return i;
}
}
return -1;
}
// 添加顶点到邻接表中
void add_vertex(struct adj_list *list, struct person p) {
int i = find_index(list, p.name);
if (i == -1) {
// 顶点不存在,添加到顶点数组中
struct vertex v;
v.data = p;
v.first = NULL;
list->vex[list->vex_num++] = v;
}
}
// 添加边到邻接表中
void add_edge(struct adj_list *list, char *name1, char *name2, int relation) {
int i = find_index(list, name1);
int j = find_index(list, name2);
if (i == -1 || j == -1) {
printf("Error: 人物不存在!\n");
return;
}
// 添加邻接点到链表中
struct node *n = (struct node *)malloc(sizeof(struct node));
n->adjvex = j;
n->relation = relation;
n->next = list->vex[i].first;
list->vex[i].first = n;
}
// 打印邻接表
void print_adj_list(struct adj_list *list) {
FILE *fp = fopen("TRKGraph.txt", "w");
for (int i = 0; i < list->vex_num; i++) {
printf("%s-->", list->vex[i].data.name);
fprintf(fp, "%s-->", list->vex[i].data.name);
struct node *p = list->vex[i].first;
while (p != NULL) {
printf("%s-->", list->vex[p->adjvex].data.name);
fprintf(fp, "%s-->", list->vex[p->adjvex].data.name);
p = p->next;
}
printf("NULL\n");
fprintf(fp, "NULL\n");
}
fclose(fp);
}
int main() {
struct adj_list list;
init_adj_list(&list);
// 添加顶点
struct person p1 = {"刘备", "蜀国"};
struct person p2 = {"关羽", "蜀国"};
struct person p3 = {"张飞", "蜀国"};
struct person p4 = {"赵云", "蜀国"};
struct person p5 = {"曹操", "魏国"};
struct person p6 = {"张辽", "魏国"};
struct person p7 = {"夏侯惇", "魏国"};
add_vertex(&list, p1);
add_vertex(&list, p2);
add_vertex(&list, p3);
add_vertex(&list, p4);
add_vertex(&list, p5);
add_vertex(&list, p6);
add_vertex(&list, p7);
// 添加边
add_edge(&list, "刘备", "张飞", 1);
add_edge(&list, "张飞", "关羽", 2);
add_edge(&list, "关羽", "赵云", 3);
add_edge(&list, "曹操", "张辽", 4);
add_edge(&list, "张辽", "夏侯惇", 5);
// 打印邻接表
print_adj_list(&list);
return 0;
}
```
运行程序后,会输出每个人物的邻接点及其关系,同时将邻接表保存在"TRKGraph.txt"文件中。