2 青岛大学-王卓 数据结构与算法基础( 二 )

next; ++j;} //寻找i-1节点if (!p || j>i-1) return ERROR; //当p为空时,p已经指向了表长+1的节点位置,此时插入位置变为表长+2,这种情况不允许,所以这里排除掉了插入位置大于表长+1位置和i小于1的不合理情况 。s=new Lnode;s->data=http://www.kingceram.com/post/e; // 创建即将插入的新节点ss->next=p->next; // s指向原来的i节点p->next=s; //i-1节点指向新节点sreturn OK;}//ListInset_L
单链表的删除操作
【2 青岛大学-王卓数据结构与算法基础】删除第i各元素 - 找前趋
Status List_Delete_L(LinkList &L, int i, ElemType &e){p=L;j=0; Lnode *q; //初始化,p指向头结点,计数器清零while(p->next && jnext; ++j;} //寻找i-1元素,注意此处判定改为了p->next, 当p->next为NULL时,说明i-1个元素已经是表的最后一个元素,那么要删除的i元素就是表长+1的元素,而它是不存在的if(!p->next || j>i-1) return ERROR; // 排除不合理的i元素q=p->next; e=q->data; //将待删除元素信息做保留p->next=q->next; // i-1元素指向i+1元素delete q; //删除指针return OK;}//ListDelete_L
单链表的查找、插入、删除时间效率单链表的建立
//头插法创建单链表Void CreateList_H(LinkList &L, int n){L=new Lnode; L->next=NULL; //建立一个带头结点的单链表for (i=n;i>0;--i){ //循环倒序插入所有元素p=new Lnode; //生成(C)新节点p=(Lnode*)malloc(sizeof(Lnode));cin>>p->data; //输入(C)元素值scanf(&p->data)p->next=L->next;L->next=p;}}//CreateList_H
尾插法 - 新元素正序依次插入末尾
//尾插法创建单链表Void CreateList_R(LinkList &L, int n){L=new Lnode; L->next=NULL; //创建空单链表r=L; // 尾指针初始化等于头结点for (i=0;i>p->data;p->next=NULL; //新节点的指针域置空作为新的尾结点 r->next=p; //新节点链接前一个节点r=p; //尾指针移动到新尾结点}}//CreateList_R
… TO BE …