引入
特点
操作
定义
插入
删除
小结
整合代码:
//定义
typedef struct node{
int data;
node* next,prior;
}Dlnode,*Dlinklist;
//初始
void init(Dlinklist &l){
Dlnode l=new Dlnode;
l->next=NULL;
l->prior=NULL;
}
//插入:插入指定位置,若已知后一个结点p,我们最好先连接好p前一个结点q,否则指针会丢失
int insert(Dlinklist &l,int index,int e){
lnode *p=l;
int i=0;
//非法处理
if(index-1<i||!p) return 0;
//找插入位置
while(p&&i<index-1){
++i;
p=p->next;
}
// 插入
lnode q=new lnode;
q->data=e;
q->prior=p->prior;
p->prior->next=q;
q->next=p;
p->prior=q;
return 1;
}
//删除指定位置元素:已知删除元素的前一个???
void del(Dlinlist &l,int index){
lnode *p=l;
int i=0;
//非法处理
if(index-1<i||!(p->next)) return 0;
//找插入位置
while(p->next&&i<index-1){
++i;
p=p->next;
}
//删除
lnode *q=p->next;
q->next->prior=p;
p->next=q->next;
delete q;
return 1;
}
如果有任何错误,麻烦大家指正,我是小白,一定虚心向大家学习!