数据结构面试题总结9——链表:基础操作

来源:互联网 发布:java基础教程 pdf 编辑:程序博客网 时间:2024/06/11 02:30

链表部分的操作无其他说明时,都用此篇文章定义的方法。


链表无特殊说明都为单链表,节点的定义如下

typedef struct node{    int data;    node* pNext;}Node;

创建一个结点,也可以用来创建链表头

Node* createNodeList(){    Node *head = new Node;    if(NULL == head)    {        return NULL;    }    else    {        head->data = -1;        head->pNext = NULL;        return head;    }}
增加结点
bool addNode(Node* head, Node* node){    if(NULL == head)    {        return false;    }    Node* p = head->pNext;    Node* q = head;    while(NULL != p)    {        q = p;        p = p->pNext;    }    q->pNext = node;    node->pNext = NULL;    return true;}

插入结点

bool insertNode(Node *before, Node *node){    if (NULL == before || NULL == node)    {        return false;    }    node->next = before->next;    before->next = node;    return true;}

删除结点(删除before结点后的结点,这里只是一个删除的例子)

bool deleteNode(Node *before){    if (NULL == before || NULL == node)    {        return false;    }    Node *p = before->next;    before->next = p->next;    delete p;    return true;}


0 0