#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdbool.h>
typedef struct DuLNode {
int data;
struct DuLNode *prior;
struct DuLNode *next;
} DuLNode, *DuLinkList;
DuLinkList ListCreate_DuL() {
DuLinkList L = (DuLinkList)malloc(sizeof(DuLNode));
L->prior = L;
L->next = L;
return L;
}
void ListPrint_DuL(DuLinkList L) {
DuLinkList p = L->next;
while(p != L) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
bool ListInsert_DuL(DuLinkList L, int i, int e) {
DuLinkList p = L;
for(int j = 1; j < i; j++) {
p = p->next;
}
if(!p) return false;
DuLinkList q = (DuLinkList)malloc(sizeof(DuLNode));
q->data = e;
q->next = p->next;
p->next->prior = q;
p->next = q;
q->prior = p;
return true;
}
bool ListDelete_DuL(DuLinkList L, int i) {
DuLinkList p = L, q;
for(int j = 1; j < i; j++) {
p = p->next;
}
q = p->next;
p->next = q->next;
free(q);
return true;
}
int main() {
int k, i, j;
DuLinkList L;
L = ListCreate_DuL();
while(EOF != scanf("%d", &k)) {
switch(k) {
case 0 : ListPrint_DuL(L); break;
case 1 : {
scanf("%d %d", &i, &j);
ListInsert_DuL(L, i, j);
break;
}
case 2 : {
scanf("%d", &i);
ListDelete_DuL(L, i);
break;
}
}
}
return 0;
}
03-03
1235
