内核链表

#ifndef LINKLIST

#define LINKLIST

#include <stdio.h>

#include <stdlib.h>

typedef struct LINKNODE
{

    struct LINKNODE* next;

}LinkNode;

typedef struct LINKLIST
{
    LinkNode head;

    int size;

}LinkList;

typedef void(PRINT)(LinkNode* data);

LinkList* Init_LinkList();

void Insert_LinkList(LinkList* list, int pos, LinkNode* data);

void Remove_LinkList(LinkList* list, int pos);

int Size_LinkList(LinkList* list);

void Print_LinkList(LinkList* list);

void Free_LinkList(LinkList* list);

int Find_LinkList(LinkList* list, LinkNode* data);

#endif

#include "LinkList.h"

LinkList* Init_LinkList()
{
    LinkList* list = (LinkList*)malloc(sizeof(LinkList));

    list->size = 0;

    list->head.next = NULL;

    return list;
}

void Insert_LinkList(LinkList* list, int pos, LinkNode* data)
{
    if (list == NULL || data == NULL)
    {
        return;
    }
    if (pos < 0 || pos >= list->size)
    {
        pos = list->size;
    }

    LinkNode* pCurrent = &(list->head);

    for (int i = 0; i < pos; i++)
    {
        pCurrent = pCurrent->next;
    }

    data->next = pCurrent->next;

    pCurrent->next = data;

    list->size++;
}

void Remove_LinkList(LinkList* list, int pos)
{

}

int Size_LinkList(LinkList* list)
{

}

void Print_LinkList(LinkList* list,PRINT print)
{
    if (list == NULL)
    {
        return;
    }
    LinkNode* pCurrent = list->head.next;
    while (pCurrent != NULL)
    {
        print(pCurrent);
        pCurrent = pCurrent->next;
    }
}

void Free_LinkList(LinkList* list)
{
    if (list == NULL)
    {
        return;
    }
    free(list);
}

int Find_LinkList(LinkList* list, LinkNode* data)
{

}

 

#include "LinkList.h"
typedef struct PERSON
{
    LinkNode node;
    char name[64];
    int age;
}Person;
void print(LinkNode* data)
{
    Person* p = (Person*)data;
    printf("%s      %d\n", p->name,p->age);
}
int main()
{
    LinkList* list = Init_LinkList();
    Person p1, p2, p3, p4, p5;
    strcpy(p1.name, "aaa");
    p1.age = 18;
    strcpy(p2.name, "bbb");
    p2.age = 18;
    strcpy(p3.name, "ccc");
    p3.age = 18;
    strcpy(p4.name, "ddd");
    p4.age = 18;
    strcpy(p5.name, "eee");
    p5.age = 18;
    Insert_LinkList(list,0,(LinkNode*)&p1);
    Insert_LinkList(list, 0, (LinkNode*)&p2);
    Insert_LinkList(list, 0, (LinkNode*)&p3);
    Insert_LinkList(list, 0, (LinkNode*)&p4);
    Insert_LinkList(list, 0, (LinkNode*)&p5);
    Print_LinkList(list,print);
    Free_LinkList(list);
    system("pause");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值