当前位置: 首页> 财经> 股票 > 无锡网络推广方案服务_亚1州区2区3区域4_seo公司是什么意思_企业网络推广技巧

无锡网络推广方案服务_亚1州区2区3区域4_seo公司是什么意思_企业网络推广技巧

时间:2025/7/9 6:10:10来源:https://blog.csdn.net/weixin_44453694/article/details/146603841 浏览次数:1次
无锡网络推广方案服务_亚1州区2区3区域4_seo公司是什么意思_企业网络推广技巧

1.知识百科

  链表(Linked List)是计算机科学中一种基础的数据结构,通过节点(Node)的链式连接来存储数据。每个节点包含两部分:存储数据的元素和指向下一个节点的指针(单链表)或前后两个指针(双链表)。

  • 常见操作
      插入:在头部、尾部或指定位置插入节点。
      删除:删除指定节点(需处理指针指向)。
      遍历:从头节点依次访问每个节点。
      查找:按值或位置查找节点(需遍历)。

2.链表操作

2.1 创建链表

  创建一个链表,用于保存学生信息,分别存储姓名、学号和成绩。
在这里插入图片描述

typedef struct STU{char name[50];char id[20];float score;struct STU *next;
}STU_INFO,*P_STU; 

  添加节点,每一个节点保存一位学生信息。

/*录入信息*/
void STU_Input(P_STU node)
{printf("请输入姓名、学号、成绩:\n");scanf("%s%s%f",node->name,node->id,&node->score);while(getchar()!='\n');
}
/*
添加节点(尾插法)
*/
void STU_AddNode(P_STU *head)
{if(*head==NULL){*head=malloc(sizeof(STU_INFO));//创建链表头(*head)->next=NULL;STU_Input(*head);//录入成员信息return ;}//链表头已存在P_STU phead=*head;//偏移指针,将phead指向链表尾while(phead->next!=NULL){phead=phead->next;}//创建节点P_STU new_node=malloc(sizeof(STU_INFO));printf("添加节点:%p\n",new_node);phead->next=new_node;phead=phead->next;phead->next=NULL;//new_node->next=NULL;//录入信息STU_Input(new_node);//录入成员信息
}

2.2 遍历链表

  遍历链表,查看所有学生信息。

void STU_Output(P_STU head)
{P_STU phead=head;//指向链表头while(phead!=NULL){printf("姓名:%s  学号:%s  成绩:%.1f\n",phead->name,phead->id,phead->score);phead=phead->next;}
}

2.3 删除节点

  根据名字查找子节点,并删除。

  当删除的节点为中间节点,删除过程如下:
在这里插入图片描述
  当删除的节点为头节点,删除过程如下:
在这里插入图片描述
  节点删除代码实现如下,支持删除多个连续的重复节点。

//查找子节点进行删除
P_STU STU_FindNode_Del(P_STU head)
{//判断链表头是否为NULLP_STU phead=head;P_STU temp=head,temp2;char name[50];printf("请输入要查找的名字:\n");scanf("%s",name);while(getchar()!='\n');while(phead!=NULL){if(strcmp(phead->name,name)==0){//要删除的数据在链表头if(phead==head){temp=phead;phead=phead->next;free(temp);head=phead;}else{//要删除的数据不在链表头temp->next=phead->next;temp2=phead;phead=phead->next;free(temp2);//释放节点}}else //继续找下一个成员{temp=phead;phead=phead->next;//继续查找下一个成员}}return head;//返回链表头
}

  测试示例:

int main()
{P_STU head=NULL;//定义一个结构体指针int i=0;//添加节点while(1){STU_AddNode(&head);i++;if(i>=4)break;}printf("遍历链表\n");STU_Output(head);printf("删除节点\n");head=STU_FindNode_Del(head);printf("剩余成员信息\n");STU_Output(head);return 0;
}

  运行效果:

wbyq@wbyq-virtual-machine $ ./a.out 
请输入姓名、学号、成绩:
1 1 1
请输入姓名、学号、成绩:
2 2 2
请输入姓名、学号、成绩:
2 2 2
请输入姓名、学号、成绩:
3 3 3
遍历链表
姓名:1  学号:1  成绩:1.0
姓名:2  学号:2  成绩:2.0
姓名:2  学号:2  成绩:2.0
姓名:3  学号:3  成绩:3.0
删除节点
请输入要查找的名字:
2
剩余成员信息
姓名:1  学号:1  成绩:1.0
姓名:3  学号:3  成绩:3.0
关键字:无锡网络推广方案服务_亚1州区2区3区域4_seo公司是什么意思_企业网络推广技巧

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: