📄 dlnode.h
字号:
#include"stdio.h"
#include"malloc.h"
#include"string.h"
#include"define.h"
typedef char ElemType;
typedef struct DLNode /*声明结构体,作为节点变量*/
{
ElemType data; /*声明节点的数据元素(数据域)*/
struct DLNode *prior; /*声明节点的前驱指针(指针域)*/
struct DLNode *next; /*声明节点的后继指针(指针域)*/
}DLNode;
Status InitList_DNode(DLNode &DL)
/*构造双向链表*/
{
if(!DL.data)return ERROR; /*保证DL为空*/
DL.data=0; /*定义链表长度为0*/
DL.prior=NULL; /*前驱指针置0*/
DL.next=NULL; /*后继指针置0*/
return OK;
}
void print_DLNode(DLNode DL)
/*正向输出双向链表的各数据元素*/
{
DLNode *p;
p=DL.next;
printf("\nDLNode length: %d,\nElement:",DL.data);
while(p)
{
printf("%c,",p->data);
p=p->next;
}
N;
}
void Bprint_DLNode(DLNode DL)
/*反向输出双链表的各数组元素*/
{
DLNode *p;
p=&DL;
while(p->next)
{
p=p->next;
}
printf("\nDLNode length: %d,\nBACK Element:",DL.data);
while(p->prior)
{
printf("%c,",p->data);
p=p->prior;
}
N;
}
Status Insert_DLNode(DLNode &DL,int i,ElemType e)
/*在双向链表的第i位置插入数据元素e*/
{
DLNode *pe,*p,*pr;
int j;
if(i<1||i>DL.data+1)return ERROR;
printf("Insert %c\n",e);
pe=(DLNode*)malloc(sizeof(DLNode));
pe->data=e;
pe->prior=NULL;
pe->next=NULL;
p=DL.next;
pr=&DL;
for(j=1;j<i;j++)
{
pr=p;
p=p->next;
}
pe->next=p;
pe->prior=pr;
pr->next=pe;
if(p!=NULL)
{
p->prior=pe;
}
DL.data++;
return OK;
}
Status Delet_DLNode(DLNode &DL,int i,ElemType &e)
/*删除双向链表中的第i个数据元素*/
{
DLNode *p;
int j;
if(i<1||i>DL.data)return ERROR;
p=DL.next;
for(j=1;j<i;j++)
{
p=p->next;
}
p->prior->next=p->next;
if(p->next!=NULL)
{
p->next->prior=p->prior;
}
e=p->data;
free(p);
DL.data--;
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -