1. 思路
1.1 头插
1.2 尾删
1.3 头删
2. 代码
2.1 DList.h
//头插
void push_front(List *list, ElemType x);
//尾删
void pop_back(List *list);
//头删
void pop_front(List *list);
2.2 DList.cpp
void push_front(List *list, ElemType x)
{
Node *s = buynode(x);
s->next = list->first->next;
list->first->next->prior = s;
list->first->next = s;
s->prior = list->first;
if(list->size == 0)
{
list->last = s;
list->last->next = NULL;
}
}
void pop_back(List *list)
{
if(list->size == 0)
{
printf("链表已空,无法删除");
return;
}
Node *s = list->last->prior;
s->next = NULL;
list->last = s;
list->size--;
}
void pop_front(List *list)
{
if(list->size == 0)
{
printf("链表已空,无法删除");
return;
}
Node *s = list->first->next;
list->first->next = s->next;
s->prior = list->first;
if(list->size == 1)
{
list->last = list->first;
}
free(s);
list->size--;
}
2.3 main.cpp
case 2:
printf("请输入要插入的数据(-1结束):");
while(scanf("%d",&Item), Item != -1)
{
push_front(&mylist, Item);
}
break;
case 4:
pop_back(&mylist);
break;
case 5:
pop_front(&mylist);
break;