双向链表:
双向链表的定义:
typedef struct DuLNode{
LElemType data;
struct DuLNode *next;
struct DuLNode *pre;
DuLNode ( LElemType Data=0,struct DuLNode *Pre=NULL,struct DuLNode *Next=NULL){
data=Data;
next=Next;
pre=Pre;
}
}DuLNode,*DuLinkList;
双向链表基本操作的实现:
(1)、初始化操作 InitDuLinkList( &L )
(2)、建立单链表的操作 CreateDuLinkList(&L , n)
(3)、判断一个线性表是否为空表ListIsEmpty(L)
(4)、求线性表的长度ListLength( L )
(5)、取线性表中的第i个元素GetElem(L,i,&e)
(6)、查找元素e在线性表中的位序LocateElem(L,e)
(7)、插入操作ListInsert(&L,i,e)
(8)、删除操作LIstDelete(&L,i,&e)
(1)、初始化操作 InitLinkList( &L )
void InitDuLinkList(DuLinkList &L){
L=new DuLNode;
}
(2)、建立单链表的操作 CreateLinkList(&L , n)
void CreateLinkList_Tail(DuLinkList &L,int n=0){ //尾插法
L=new DuLNode;
DuLinkList Pre=L,p;
LElemType data;
for(int i=1;i<=n;i++){
printf("请输入第%d个data值:\n",i);
cin>>data;
p=new DuLNode(data,Pre);
Pre->next=p;
Pre=p;
}
}
void CreateLinkList_Head(DuLinkList &L ,int n=0){//头插法
L=ne