学习笔记-线性表-数据结构

 

链表部分。

定义

typedef int DATA;
struct Node
{
    DATA data;
    Node *next;
};
struct List
{
    Node* head;
    Node* last;
    int count;
};

 插入元素(把e元素插入到L的第i个元素之前,其中i>=0&&i<length)

bool ListInsert(List &L, int i, DATA e)
{
    Node *p = new Node();
    if (!p)return false;
    if (i<0 || i>L.count-1)return false;
    p->data = e;
    if (i == 0)
    {
        p->next = L.head;
        L.head = p;
    }
    else
    {
        int j = 0;
        Node *loc = L.head;
        while (loc&&j<i-1){
            loc = loc->next;
            j++;  
        }
        p->next = loc;
        loc->next = p;
        L.count++;
    }
    return true;
}

 从L中获取第i个元素并存入到e中

bool getElem(List L, int i, DATA &e)
{
    Node *p = L.head;
    int j = 0;
    while (p)
    {
        if (j == i)
            break;
        p = p->next;
        j++;
    }
    if (j == i) //找到了
    {
        e = p->data;
        return true;
    }
    else
        return false;
}

 添加元素,直接追加到链尾部

bool addElem(List &L, DATA dt)
{
    Node *p = new Node();
    if (!p)             //如果申请内存失败
        return false;
    p->next = NULL;
    p->data = dt;
    if (!L.head)         //判断是否为空表
        L.head = L.last = p;
    else
    {
        L.last->next = p;
        L.last = p;
    }
    L.count++;          //L中元素数目+1
    return true;
}

 

posted @ 2016-03-06 16:45  xdzhcs  阅读(191)  评论(0编辑  收藏  举报