mirror of
https://git.wolves.top/wolves/leetcode.git
synced 2025-11-04 17:26:32 +08:00
init
This commit is contained in:
108
24/11/Llist.c
Normal file
108
24/11/Llist.c
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct ListNode
|
||||
{
|
||||
int val;
|
||||
ListNode *next;
|
||||
} ListNode;
|
||||
|
||||
|
||||
// 若使用了带头节点的链表,则无需判断head是否为空
|
||||
ListNode *createListNode(int val)
|
||||
{
|
||||
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
|
||||
node->val = val;
|
||||
node->next = NULL;
|
||||
return node;
|
||||
}
|
||||
|
||||
void printList(ListNode *head)
|
||||
{
|
||||
ListNode *temp = head;
|
||||
while(temp){
|
||||
printf("%d ",temp->val);
|
||||
temp = temp->next;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// 添加节点
|
||||
ListNode *addNode(ListNode *head,int val)
|
||||
{
|
||||
if(head == NULL){
|
||||
head = createListNode(val);
|
||||
return head;
|
||||
}
|
||||
ListNode *temp = head;
|
||||
while(temp->next){
|
||||
temp = temp->next;
|
||||
}
|
||||
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
|
||||
node->val = val;
|
||||
node->next = NULL;
|
||||
temp->next = node;
|
||||
return head;
|
||||
}
|
||||
|
||||
int Locate(ListNode *head,int val){
|
||||
if(head == NULL){
|
||||
return -1;
|
||||
}
|
||||
ListNode *temp = head;
|
||||
int index = 0;
|
||||
while(temp){
|
||||
if(temp->val==val){
|
||||
return index;
|
||||
}
|
||||
temp = temp->next;
|
||||
index++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 删除节点
|
||||
ListNode *deleteNode(ListNode *head,int val){
|
||||
if(head == NULL){
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ListNode *temp1 = head;
|
||||
if(temp1->val == val){
|
||||
head = temp1->next;
|
||||
free(temp1);
|
||||
return head;
|
||||
}
|
||||
|
||||
ListNode *temp2 = head->next;
|
||||
while (temp2)
|
||||
{
|
||||
if(temp2->val == val){
|
||||
temp1->next = temp2->next;
|
||||
free(temp2);
|
||||
return head;
|
||||
}
|
||||
temp1 = temp1->next;
|
||||
temp2 = temp2->next;
|
||||
}
|
||||
return head;
|
||||
}
|
||||
|
||||
ListNode *insertNode(ListNode *head,int val,int index){
|
||||
if(head == NULL){
|
||||
head = createListNode(val);
|
||||
return head;
|
||||
}
|
||||
|
||||
ListNode *temp = head;
|
||||
int i = 0;
|
||||
while(i < index-1 && temp){
|
||||
temp = temp->next;
|
||||
i++;
|
||||
}
|
||||
|
||||
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
|
||||
node->val = val;
|
||||
node->next = temp->next;
|
||||
temp->next = node;
|
||||
return head;
|
||||
}
|
||||
Reference in New Issue
Block a user