正在学习数据结构与算法,学习资料是小甲鱼的《数据结构和算法》,记录日志
#include "data.h"
#include <stdio.h>
int main() {
DaulNodeList2* L = CreateDaulNodeList2();
InitDaulNodeList2(L);
DaulNode2 *e = (DaulNode2*)malloc(sizeof(DaulNode2));
/*e = L->head;
while(L->length > 0){
printf("%d\n", e->value);
e = e->next;
L->length--;
}*/
while(L->length){
DeleteDaulNodeList2(L, e);
printf("%d\n", e->value);
}
return 0;
}
#define OK 1;
typedef struct DaulNode2 {
int value;
struct DaulNode2* prev;
struct DaulNode2* next;
} DaulNode2;
typedef struct DaulNodeList2 {
int length;
DaulNode2* head;
} DaulNodeList2;
DaulNodeList2* CreateDaulNodeList2(void);
int InitDaulNodeList2(DaulNodeList2* L);
int DeleteDaulNodeList2(DaulNodeList2* L, DaulNode2* e);
#include "data.h"
#include <stdlib.h>
DaulNodeList2* CreateDaulNodeList2(void){
DaulNodeList2* L = (DaulNodeList2*)malloc(sizeof(DaulNodeList2));
L->length = 0;
L->head = NULL;
return L;
}
int InitDaulNodeList2(DaulNodeList2* L){
DaulNode2* s = (DaulNode2*)malloc(sizeof(DaulNode2));
s->value = 1;
s->prev = NULL;
s->next = s;
L->head = s;
L->length++;
int i = 2;
while(i < 42){
DaulNode2* p = (DaulNode2*)malloc(sizeof(DaulNode2));
p->value = i;
p->prev = s;
p->next = s ->next;
s->next = p;
L->length++;
//while的下一个循环
s = p;
i++;
}
L->head->prev = s;
return OK;
}
int DeleteDaulNodeList2(DaulNodeList2* L, DaulNode2* e){
int i = 3;
int j = 1;
DaulNode2* p = (DaulNode2*)malloc(sizeof(DaulNode2));
p = L->head;
// 找出第3个节点
while(j < i){
p = p->next;
j++;
}
e->value = p->value;
// 删除操作
p->prev->next = p->next;
p->next->prev = p->prev;
L->length--;
// 把第3个节点的下一个设置为头节点
L->head = p->next;
free(p);
return OK;
}