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