链表插入删除

来源:互联网 发布:sql语句count用法 编辑:程序博客网 时间:2024/05/11 16:23

#include <iostream>

struct NODE

{
    int val;
    NODE* next;
};
struct LinkList
{
    NODE* head;
};
void CreateLinkList(LinkList &L)
{
    NODE *p = new NODE;
    L.head = p;
    p->val = 2;
    p->next = new NODE;
    p = p->next;
    p->val = 3;
    p->next = new NODE;
    p = p->next;
    p->val = 5;
    p->next = NULL;
}

void InsertNode(LinkList &L, int key)
{
    NODE *p = L.head;
    NODE *q = p;
    while(p && p->val < key)
    {
        q = p;
        p = p->next;
    }
    NODE *s = new NODE;
    s->val = key;
    s->next = NULL;
    if(p == L.head)
    {
        s->next = p;
        L.head = s;
    }
    else
    {
        s->next = p;
        q->next = s;
    }
}

void DeleteNODE(LinkList &L, int key)
{
    NODE *p = L.head;
    NODE *q = L.head;
    while(p && p->val != key)
    {
        q = p;
        p = p->next;
    }
    if(p == NULL)
    {
        return;
    }
    else if(p == L.head)
    {
        L.head = p->next;
        delete p;
        p = NULL;
        q = NULL;
    }
    else
    {
        q->next = p->next;
        delete p;
        p = NULL;
    }
}
 int main()
{
    LinkList L;
    CreateLinkList(L);
    InsertNode(L, 1);
    InsertNode(L, 6);
    InsertNode(L, 5);
    DeleteNODE(L, 1);
    DeleteNODE(L, 4);
    DeleteNODE(L, 6);
    DeleteNODE(L, 5);


    system("pause");
    return 0;