p=yjhead->next; for(q=NULL,p=yjhead;p;q=p,p=p->next) { if(strcmp(pre->ID,p->ID)==0) { if(q) { i=1; printf("删除成功\n\n"); printf("删除的研究生信息为:\n\n"); printf("学号:%s\n",p->ID ); printf("研究生姓名:%s\n",p->name); printf("性别:%s\n",p->xingb); printf("身份出生日期:%s\n",p->age); printf("专业名称:%s\n",p->zyname); printf("备注:%s\n",p->beiz); printf("\n"); q->next=p->next; goto start; }else{ yjhead=p->next; i=1; } free(p); break; } } if(i!=1) printf("没有该学号,请检查您输入学号是否正确!\n"); end:; }
时间: 2024-02-14 10:24:27 浏览: 153
LWIP的pcb->net指向自己死机问题
4星 · 用户满意度95%
这段代码是对一个链表进行删除操作。链表的头节点为 `yjhead`,链表中的每个节点包含以下信息:
- `ID`:学号
- `name`:研究生姓名
- `xingb`:性别
- `age`:身份出生日期
- `zyname`:专业名称
- `beiz`:备注
代码中使用了 `p` 和 `q` 两个指针变量,其中 `p` 指向当前节点,`q` 指向前一个节点。
该段代码的作用是根据输入的 `pre->ID`(一个研究生的学号),在链表中找到该学号对应的节点,并将节点从链表中删除。如果成功删除,则输出该学生的信息;如果没有找到对应的学号,则输出提示信息。
其中 `i` 是一个标志位,如果成功删除节点,则将 `i` 赋值为 1。 `goto` 语句用于跳转到标签 `start`,继续检查下一个节点。
阅读全文