链表学习笔记(上)
2025-08-20 10:55:43
发布于:上海
作者闲的没事干发的
下面放上一堆链表函数(终于用上英文单词了):
struct node//链表初始化
{
int data;
node* next;
node(int x):data(x),next(NULL){};
};
node* createlist(int arr[],int size)//创建链表
{
if(size<=0)return nullptr;
node* head=new node(arr[0]);
node* cur=head;
for(int i=1;i<size;i++)
{
cur->next=new node(arr[i]);
cur=cur->next;
}
return head;
}
void printlist(node* head)//打印链表
{
node* cur=head;
while(cur!=nullptr)
{
cout<<cur->data<<" ";
cur=cur->next;
}
}
node* insertAtHead(node* head,int val)//在链表头插入
{
node* newNode=new node(val);
newNode->next=head;
return newNode;
}
node* insertAtTail(node* head,int val)//在链表尾端插入
{
node* newNode=new node(val);
if(head==nullptr)return newNode;
node* cur=head;
while(cur->next!=nullptr)
{
cur=cur->next;
}
cur->next=newNode;
return head;
}
node* insertAtIndex(node* head,int index,int val)//在链表任意位置插入
{
if(index==0)return insertAtHead(head,val);
node* newNode=new node(val);
node* cur=head;
int curIndex=0;
while(cur!=nullptr&&curIndex<index-1)
{
cur=cur->next;
curIndex++;
}
if(cur==nullptr)
{
delete newNode;//释放节点,减少空间复杂度
return head;
}
newNode->next=cur->next;
cur->next=newNode;
return head;
}
node* deletehead(node* head)//链表删头
{
if(head==nullptr)return nullptr;
node* temp=head;
head=head->next;
delete temp;//用完节点就删
return head;
}
node* deletetail(node* head)//链表删尾
{
if(head==nullptr)return nullptr;
if(head->next==nullptr)
{
delete head;
return nullptr;//如果链表只有头就返回空
}
node* cur=head;
while(cur->next->next!=nullptr)
{
cur=cur->next;
}
delete cur->next;
cur->next=nullptr;
return head;
}
node* deleteIndex(node* head,int index)//删除链表任意位置
{
if(head==nullptr)return nullptr;
if(index==0)return deletehead(head);
node* cur=head;
int curIndex=0;
while(cur!=nullptr&&curIndex<index-1)
{
cur=cur->next;
curIndex++;
}
if(cur==nullptr||cur->next==nullptr)return head;
node* temp=cur->next;
cur->next=cur->next->next;
delete temp;
return head;
}
全部评论 5
d
3天前 来自 上海
0珠宝为啥不用list
1周前 来自 广东
0懒得用,纯手搓
1周前 来自 上海
0
d
1周前 来自 上海
0%%%
1周前 来自 上海
0链表大佬
1周前 来自 上海
0闲的没事干发的
1周前 来自 上海
0
d
2025-08-20 来自 上海
0
有帮助,赞一个