/*
双链表
*/
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct DuLNode{
ElemType data;
struct DuLNode * prior, * next;
}DuLNode, * DuLinkList;
/*
获取第i个元素所在的地址
*/
DuLinkList GetElemP_Dul(DuLinkList L, int i){
DuLinkList p;
p = L->next;
int j = 1;
while(p && i > j){
p = p->next;
j++;
}
if(!p || j > i) return NULL;
return p;
}
/*
双向链表的插入
*/
int ListInsert_Dul(DuLinkList L, int i, ElemType e){
DuLinkList p, s;
p = GetElemP_Dul(L, i);
if(!p)return -1;
s = (DuLinkList)malloc(sizeof(DuLNode));
s->data = e;
s->prior = p->prior;
p->prior->next = s;
p->prior = s;
s->next = p;
return 1;
}
/*
双向链表的删除
*/
int ListDelete_Dul(DuLinkList L, int i, ElemType e){
DuLinkList p, s;
p = GetElemP_Dul(L, i);
if(!p)return -1;
p->prior->next = p->next;
p->next->prior = p->prior;
free(p);
return 1;
}
int main(){
return 0;
}
双向链表操作
转载
我亦无他,惟手熟尔
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:Scanner对象
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
双向出口重定向
双向出口重定向
ip地址 网络拓扑 静态路由