【C++】带头结点的单链表实现
代码
/*
*带头节点的单链表
*/
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct ListNode
{
int data;
struct ListNode* next;
} Node,*PNode;
//新建结点,num表示结点个数
PNode NewNode(int num)
{
//新建头结点
PNode head=(PNode)malloc(sizeof(Node));
if(head==NULL)
{
cout<<"头节点内存分配失败!";
exit(0);
}
PNode temp=head;
temp->next=NULL;
for(int i=0; i<num; i++)
{
//当前结点的数据
int num;
cin>>num;
//新节点
PNode node=(PNode)malloc(sizeof(Node));
if(node==NULL)
{
cout<<"节点内存分配失败!";
exit(0);
}
node->data=num;
temp->next=node;
temp=node;//使temp指向新建结点
}
return head;//返回头结点
}
//删除结点,temp表示删除链表的第几个结点
void Free(PNode node,int temp)
{
int num=1;
while(temp!=num)
{
node=node->next;
num++;
}
node->next=node->next->next;
}
//在尾部插入结点,temp表示插入的数据
void Insertoftail(PNode node,int temp)
{
while(node->next!=NULL)//注意判断条件是node->next!=NULL;指向最后一个结点就停止
{
node=node->next;
}
PNode New=(PNode)malloc(sizeof(Node));
if(New==NULL)
{
cout<<"节点内存分配失败!";
exit(0);
}
New->data=temp;
node->next=New;
}
//根据链表及数据,查找所在位置,只能查找第一个找到的
void Search(PNode node,int temp)
{
node=node->next;
int num=0;
while(node!=NULL)
{
num++;
if(node->data==temp)
{
cout<<"您查找的数字"<<temp<<"在"<<num<<"位"<<endl;
return;
}
node=node->next;
}
cout<<"未找到!"<<endl;
}
//输出链表数据
void Printf(PNode node)
{
node=node->next;//头节点需要跳过
while(node!=NULL)
{
cout<<node->data<<" ";
node=node->next;
}
cout<<endl;
}
int main()
{
ListNode* head=NewNode(7);//新建长度为7的链表,逐个输入数据
Printf(head);//输出当前链表数据
Search(head,8);//查找数据为8的结点
Insertoftail(head,99);//在尾部插入数据为99的结点
Printf(head);//输出当前链表数据
Free(head,1);//删除第一个结点
Printf(head);//输出当前链表数据
return 0;
}
截图
本文来自博客园,作者:帅气的涛啊,转载请注明原文链接:https://www.cnblogs.com/handsometaoa/p/12067042.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)