0
点赞
收藏
分享

微信扫一扫

探索PostgreSQL存储过程:效率与强大的结合体

猎书客er 2024-06-25 阅读 22

#include<iostream>

using namespace std;

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

//创建
ListNode* ListCreate()
{
    ListNode* head = (ListNode*)malloc(sizeof(ListNode));

    head->next = NULL;

    return head;
}

//尾部添加
void AddAtTail(ListNode* obj, int val)
{
    ListNode* cur = obj;

    while(cur->next != NULL)
    {
        cur = cur->next;
    }

    ListNode* nTail = (ListNode*)malloc(sizeof(ListNode));

    nTail->val = val;
    nTail->next = NULL;
    cur->next = nTail;
}

//头部添加
void AddAtHead(ListNode* obj, int val)
{
    ListNode* nhead = (ListNode*)malloc(sizeof(ListNode));
    nhead->val = val;
    nhead->next = obj->next;
    obj->next = nhead;
}
//指定索引处添加
void AddAtIndex(ListNode* obj, int index, int val)
{
    if(index == 0)
    {
        AddAtHead(obj, val);
        return;
    }

    ListNode* cur = obj->next;

    for(int i = 1; cur != NULL; i++)
    {
        if(i == index)
        {
            ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
            newNode->val = val;
            newNode->next = cur->next;
            cur->next = newNode;
            return;
        }
        else
        {
            cur = cur->next;
        }
    }
}

//指定索引处删除
void DeleteAtIndex(ListNode* obj, int index)
{
    if(index == 0)
    {
        ListNode* tmp = obj->next;
        if(tmp != NULL)
        {
            obj->next = tmp->next;
            free(tmp);
        }

        return;
    }

    ListNode* cur = obj->next;

    for(int i = 1; cur != NULL && cur->next != NULL; i++)
    {
        if(i == index)
        {
            ListNode* tmp = cur->next;
            if(tmp != NULL)
            {
                cur->next = tmp->next;
                free(tmp);
            }
            return;
        }
        else
        {
            cur = cur->next;
        }
    }
}

//全部删除
void ListFree(ListNode* obj)
{
    while(obj != NULL)
    {
        ListNode* tmp = obj;
        obj = obj->next;
        free(tmp);
    }
    obj->next = NULL;
}

//修改指定索引的值
void ChangeAtIndex(ListNode* obj, int index, int val)
{
    ListNode* cur = obj->next;

    for(int i = 0; cur != NULL; i++)
    {
        if(i == index)
        {
            cur->val = val;
            return;
        }
        else
        {
            cur = cur->next;
        }
    }
}

//查询指定位置的值
int CheckAtIndex(ListNode* obj, int index)
{
    ListNode* cur = obj->next;
    for(int i = 0; cur != NULL; i++)
    {
        if(i == index)
        {
            return cur->val;
        }
        else
        {
            cur = cur->next;
        }
    }
}

int main()
{
    ListNode* head = ListCreate();

    for(int i = 1; i < 10; i++)
    {
        //在尾部添加
        AddAtTail(head, i);
    }

    ListNode* obj = head->next;

    while(obj != NULL)
    {
        cout << obj->val << endl;
        obj = obj->next;
    }

    //测试在头部添加
    //AddAtHead(head, 100);

    //测试在指定位置3添加
    //AddAtIndex(head, 3, 300);

    //测试在指定位置0添加
    //AddAtIndex(head, 0, 0);

    //测试在指定位置删除
    //DeleteAtIndex(head, 3);

    //测试修改指定位置数据
    //ChangeAtIndex(head, 3, 0);

    //测试查询指定位置的值
    int Data = CheckAtIndex(head, 3);

    cout << "data = " << Data << endl;

    ListNode* obj1 = head->next;

    while(obj1 != NULL)
    {
        cout << obj1->val << endl;
        obj1 = obj1->next;
    }
    return 0;
}
 

举报

相关推荐

0 条评论