链表的插入、删除

来源:互联网 发布:mysql 状态 编辑:程序博客网 时间:2024/05/22 13:02
#include<iostream>using namespace std;typedef struct node {    int data;    struct node *next;    node(int data = 0, struct node* next = NULL) : data(data), next(next) {}//构造函数初始化列表} Node, *pNode;void insert(pNode& head, int position, int data){    if (position>head->data)    {        cout << "插入链表长度不够" << endl;        return;    }    pNode p;    p = head;    for (int i = 0; i < position; i++)    {        p = p->next;//插入到p节点后    }    pNode s = new Node(data);//s没有需初始化    s->next = p->next;    p->next = s;        (head->data)++;}void remove(pNode& head, int position){    if (position>head->data-1)    {        cout << "删除链表长度不够" << endl;        return;    }    pNode p;    p = head;    for (int i = 0; i < position; i++)    {        p = p->next;//删除p节点后的节点    }    pNode q;    q = p->next;    p->next = q->next;    free(q);    (head->data)--;}int main(){    pNode head = new Node();    insert(head, 3, 1);    insert(head,0,1);    insert(head, 0, 3);//231    remove(head, 3);    remove(head, 0);//11    cout << head->data << endl;//输出链表的长度(不包括head)    return 0;}