美文网首页C语言学习C语言
C语言-单链表的实现和操作

C语言-单链表的实现和操作

作者: 咸鱼Boss | 来源:发表于2019-10-22 23:14 被阅读0次
#include<stdlib.h>
#include<stdio.h>

定义

typedef struct ListNode{
    int val;
    struct ListNode* next;
}ListNode;

遍历

void print_ListNode(ListNode* head){
    for(ListNode* p = head; p!=NULL; p=p->next){
        printf("%d->",p->val);
    }
    printf("\n");
}

创建

ListNode* create(int val){
    ListNode* node = malloc(sizeof(ListNode));
    node->val = val;
}

搜索

int find(ListNode* head, int val){
    int count = 0;
    while(head){
        if(head->val == val){
           return count;
        }
       head = head->next;
       count++;
   }
   return -1;
}

长度

int ListLen(ListNode* head){
    int count = 0;
    while(head){
       head = head->next;
       count++;
   }
   return count;
}

增(append)

void ListAppend(ListNode* head, int val){
    while(head->next!=NULL){
        head = head->next;
    }
    ListNode *node = create(6);
    head->next = node;
}

增(insert)

void ListInsert(ListNode*head, int val, int index){
    if(index == 0){
        ListNode* node = create(head->val);
        head->val = val;
        node->next = head->next;
        head->next = node;
    }else{
        for(int i = 0; i<index-1; i++){
            head = head->next;
        }
        ListNode* node = create(val);
        node->next = head->next;
        head->next = node;
    }
}

删(index>0)

void* ListDelete(ListNode*head, int index){
    for(int i = 0; i< index-1; i++){
        head=head->next;
    }
    ListNode * temp = head->next;
    head->next = head->next->next;
    free(temp);
}

反转

ListNode* ListReverse(ListNode*head){
    if(head == NULL || head->next == NULL){
        return head;
    }
    ListNode* newHead = ListReverse(head->next);
    head->next->next = head;
    head->next = NULL;
    return newHead;
}

复制

ListNode* ListCopy(ListNode* head){
    if(head == NULL){
        return NULL;
    }
    ListNode* node = create(head->val);
    node-> next = ListCopy(head->next);
    return node;
}

相关文章

网友评论

    本文标题:C语言-单链表的实现和操作

    本文链接:https://www.haomeiwen.com/subject/wwtcvctx.html