#include "stdio.h"
#include "stdlib.h"
typedef int DataType;
typedef struct Node {
DataType data;
struct Node* pre;
struct Node* next;
}Node;
void listInit(Node *pHead);
void listInsert(Node *pHead, Node *p, int value);
DataType listDelete(Node * pHead, Node* p);
int length(Node * head);
void printLink(Node * pHead);
int main() {
Node headNode = {0, NULL, NULL};
Node *pHead = &headNode;
headNode.next = pHead;
listInit(pHead);
listInsert(pHead, pHead->next->next, 88);
listDelete(pHead, pHead->next->next);
printLink(pHead);
}
void listInit(Node *pHead) {
pHead->data = 100;
for (int i = 100; i > 0; --i) {
Node *temp = (Node *) malloc(sizeof(Node));
temp->data = i;
temp->next = pHead->next;
temp->pre = pHead;
if(i != 100) temp->next->pre = temp;
pHead->next = temp;
}
}
void listInsert(Node *pHead, Node* p, int value) {
pHead->data++;
Node *temp = (Node *) malloc(sizeof(Node));
temp->data = value;
temp->next = p->next;
p->next->pre = temp;
temp->pre = p;
p->next = temp;
}
DataType listDelete(Node * pHead, Node* p) {
pHead->data--;
p->pre->next = p->next;
p->next->pre = p->pre;
int pData = p->data;
free(p);
return pData;
}
int length(Node * head) {
return head->data;
}
void printLink(Node * pHead) {
Node* n = pHead;
while (pHead->next != n) {
printf("%d", pHead->next->data);
if (pHead->next->next != n) {
printf(" <===> ");
}
pHead = pHead->next;
}
printf("\n");
}