归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言📝
每一个裂缝都是为透出光而努力!
头文件
#pragma once
#include<stdio.h>
#include<malloc.h>
#define DataType int
typedef struct DLNode
{
DataType data;
struct DLNode* prior;
struct DLNode* next;
}DLNode,*DLinkList;
void InitDLinkList(DLinkList* head);
int InsertElem(DLinkList head, int i,DataType e);
int DeleteElem(DLinkList head, int i,DataType *e);
void InsertElemR(DLinkList head, DataType e);
void InsertElemF(DLinkList head, DataType e);
DLinkList.cpp
#include "DLinkList.h"
#define _CRT_SECURE_NO_WARNINGS 1
void InitDLinkList(DLinkList* head)
{
(*head) = (DLinkList)malloc(sizeof(DLNode));
(*head)->prior = NULL;
(*head)->next = NULL;
}
int InsertElem(DLinkList head, int i, DataType e)
{
DLNode* pre, * p;
if (i<=0)
{
printf("插入位置错误!\n");
return -1;
}
int j;
pre = head;
j = 0;
while (pre->next&&j<i-1)
{
pre = pre->next;
j++;
}
if (j != i-1)
{
printf("插入位置错误!\n");
return 0;
}
p = (DLNode*)malloc(sizeof(DLNode));
p->data = e;
p->prior = pre;
p->next = pre->next;
if (p->next != NULL)
{
p->next->prior = p;
}
pre->next = p;
return 1;
}
int DeleteElem(DLinkList head, int i,DataType *e)
{
DLNode* p;
if (i <= 0)
{
printf("删除位置错误!\n");
return -1;
}
int j;
p = head;
j = 0;
while (p->next && j < i)
{
p = p->next;
j++;
}
if (j != i)
{
printf("删除位置错误!\n");
return 0;
}
p->prior->next = p->next;
p->next->prior = p->prior;
*e = p->data;
free(p);
return 1;
}
void InsertElemR(DLinkList head, DataType e)
{
DLNode* pre, * p;
pre = head;
while (pre->next)
{
pre = pre->next;
}
p = (DLNode*)malloc(sizeof(DLNode));
p->data = e;
p->prior = pre;
p->next = NULL;
pre->next = p;
}
void InsertElemF(DLinkList head, DataType e)
{
DLNode* p;
p = (DLNode*)malloc(sizeof(DLNode));
p->data = e;
p->prior = head;
p->next = head->next;
if (head->next != NULL)
{
head->next->prior = p;
}
head->next = p;
}