c语言链表操作怎么用啊,刚学不太懂。对于输入的若干学生的信息(学号、姓名、年龄),要求使用链表完成:还要在中间插入和删除。
简单的C语言关于链表操作
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qzjhjxj 2022-09-05 11:32关注
供参考:
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct node { char num[10]; //学号 char name[10]; //姓名 int age; //年龄 struct node* next; }Lnode, * LinkNode; void creatlist(LinkNode* L, int n) { int i; LinkNode pt; for (i = 0; i < n; i++) { pt = (LinkNode)malloc(sizeof(Lnode)); pt->next = NULL; scanf("%s %s %d", pt->num, pt->name, &pt->age); pt->next = (*L); (*L) = pt; } } void insertlist(LinkNode L, LinkNode pt, int i, int n) { int k = 0; if (i < 1 || i > n) return; LinkNode p = L; while (p && k < i - 1) { k++; p = p->next; } pt->next = p->next; p->next = pt; } void deletelist(LinkNode* L, char* s_num) { LinkNode p = (*L), pre = NULL; while (p) { if (strcmp(p->num, s_num) == 0) { if (p == (*L)) { (*L) = p->next; free(p); p = (*L); } else { pre->next = p->next; free(p); p = pre; } } else { pre = p; p = p->next; } } } void printlist(LinkNode L) { LinkNode p = L; while (p) { printf("%s %s %d\n", p->num, p->name, p->age); p = p->next; } } int main() { int T, n, m; scanf("%d", &T);//输入正整数 T while (T--) { char num[10] = { 0 };//待删除学生的学号 LinkNode L = NULL, pt = NULL; scanf("%d", &n);//输入正整数 n ,表示 n 个学生 creatlist(&L, n); //输入 n 行学生信息,创建链表 pt = (LinkNode)malloc(sizeof(Lnode)); pt->next = NULL; scanf("%d %s %s %d", &m, pt->num, pt->name, &pt->age);//输入m 和一个新学生的信息 scanf("%s", num); //输入待删除学生的学号 printlist(L); //以下开始依次输出描述中要求的学生信息 insertlist(L, pt, m, n); printlist(L); deletelist(&L, num); printlist(L); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 关于大棚监测的pcb板设计
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)