📄 dlnode.h
字号:
typedef struct Node
{
DataType data;
struct Node *prior;
struct Node * next;
}DLNode;
void ListInitiate(DLNode **head)
{
if((*head=(DLNode*)malloc(sizeof(DLNode)))==NULL) return;
(*head)->prior =*head;
(*head)->next=*head;
}
int ListLength(DLNode *head)
{
DLNode *q;
int size;
q=head;
size=0;
while(q->next!=head) //判断当前结点是不是最后一个结点
{
q=q->next; //指针先指向下一个节点后长度再加一
size++;
}
return size;
}
int ListInsert(DLNode *head,int i,DataType x)
{
DLNode *p,*q;
int j;
p=head->next;
j=0;
while(p!=head&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
printf("插入位置有误\n");
return 0;
}
if((q=(DLNode*)malloc(sizeof(DLNode)))==NULL)
return 0;
q->data=x;
q->prior=p->prior;
p->prior->next=q;
p->prior=q;
q->next=p;
return 1;
}
int ListDelete(DLNode *head,int i,DataType *x)
{
DLNode *p;
int j;
p=head->next;
j=0;
while(p->next!=head&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
printf("删除位置有误\n");
return 0;
}
p->prior->next= p->next ;
p->next->prior=p->prior;
*x=p->data;
free(p);
return 1;
}
int ListGet(DLNode *head,int i,DataType *x)
{
DLNode *p;
int j;
p=head;
j=0;
while(p->next!=head&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
printf("取元素位置出错\n");
return 0;
}
*x=p->data;
return 1;
}
void ListDestory(DLNode **head)
{
DLNode *p,*q;
int i,n;
p=*head;
n=ListLength(*head);
for(i=0;i<=n;i++)
{
q=p;
p=p->next;
free(q);
}
*head=NULL;//撤消后 头指针还要置空
}
void ListPrintPrior(DLNode *head)
{
DLNode *p;
p=head->prior;
while(p!=head)
{
printf("%d ",p->data);
p=p->prior;
}
printf("\n");
}
void ListPrintNext(DLNode *head)
{
DLNode *p;
p=head->next;
while(p!=head)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -