用如下定义的结构体 Person 表示人员信息,分别用以 Person 为结点的链表 a 和 b 输 入若干人员的信息,以人员证件号输入字符串“0”表示输入结束。从链表 a 中删除与链 表 b 中证件号相同的结点; struct Person{ char ID[18]; //人员证件号 char name[20]; struct Person* next;} (1)struct Person * create() //创建动态的单向链表 (2)struct Person * del (struct Person *aHead, struct Person *bHead) //在链表 aHead 中删除与链表 bHead 中有相同身份证号码的结点。
时间: 2023-02-06 14:16:12 浏览: 50
c结构与链表PPT课件.pptx
第一个函数 create() 用于创建动态的单向链表。代码如下:
struct Person* create()
{
struct Person *pHead = NULL; //定义一个指针 pHead,初始化为空
struct Person *pTail = NULL; //定义一个指针 pTail,初始化为空
struct Person *pNew = NULL; //定义一个指针 pNew,初始化为空
char ID[18]; //人员证件号
char name[20]; //人员姓名
//输入人员信息,以人员证件号输入字符串“0”表示输入结束
while(1)
{
printf("请输入人员证件号:");
scanf("%s", ID);
if(strcmp(ID, "0") == 0) //如果输入的是“0”,则退出循环
break;
printf("请输入人员姓名:");
scanf("%s", name);
//为新结点分配内存
pNew = (struct Person*)malloc(sizeof(struct Person));
if(pNew == NULL) //内存分配失败
{
printf("内存分配失败!\n");
return NULL;
}
//将新结点的信息存入新结点中
strcpy(pNew->ID, ID); //将人员证件号存入新结点中
strcpy(pNew->name, name); //将人员姓名存入新结点中
pNew->next = NULL; //将新结点的 next 指针设为空
//将新结点插入链表尾部
if(pHead == NULL) //如果链表为空
pHead = pTail = pNew; //将 pHead 和 pTail 都指向新结点
else //如果链表不为空
{
pTail->next = pNew; //将新结
阅读全文