#include<iostream>
using namespace std;
struct ListNode{
int val;
ListNode * next;
ListNode(int x): val(x),next(NULL){
}
};
int getLength(ListNode *head)
{
int len = 0;
while(head)
{
len++;
head = head->next;
}
return len;
}
void printNode(ListNode *head)
{
while(head)
{
cout<<head->val<<" ";
head = head->next;
}
cout<<endl;
}
ListNode* Insert(ListNode *head,int val, int loc)
{
//在头部插入
int len = getLength(head);
if(loc > len)
return head;
ListNode *newNode = new ListNode(val);
if(loc <= 0)
{
ListNode *dummy = new ListNode(-1);
dummy->next = head;
newNode->next = dummy->next;
dummy->next = newNode;
head = dummy->next;
}
else if (loc == len)
{
ListNode* cur = head;
while(cur->next)
{
cur = cur->next;
}
cur->next = newNode;
}
else
{
ListNode* cur = head;
for(int i = 0; i < loc-1; i++)
{
cur = cur->next;
}
ListNode* part = cur->next;
cur->next = newNode;
cur = cur->next;
cur->next = part;
}
return head;
}
int main()
{
ListNode *head = new ListNode(12);
ListNode* newList1 = Insert(head,11,-1);
printNode(newList1);
ListNode* newList2 = Insert(newList1,13,2);
printNode(newList2);
ListNode* newList3 = Insert(newList2,100,1);
printNode(newList3);
}
c++简单的链表插入操作
最新推荐文章于 2024-08-05 20:52:59 发布