本文解决的问题主要是:
7. 构造双链表并实现插入和删除功能。
代码如下:
//双链表
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
struct node *prior;
}node,*DLinkList;
void deleteNode(int x,DLinkList p)
{
while(p != NULL)
{
if(p->data == x)
{
DLinkList temp;
temp = p->next;
p->prior->next=p->next;
p->next->prior=p->prior;
p = temp;
}else{
p = p->next;
}
}
}
int main()
{
int i;
int x;
DLinkList s,L,p;
L=(DLinkList)malloc(sizeof(node));
L->next = NULL;
// int a[10]={90,91,92,93,94,95,96,97,98,99};
/*******************************7、建立双链表,实现插入和删除*************************************************/
//尾插入
for(i=0;i<50;i++)
{
s=(DLinkList)malloc(sizeof(node));
s->data = rand()%15+85;
s->next = NULL;
p=L;
while(p->next != NULL)
{
p = p->next;
}
p->next=s;
s->prior=p;
}
printf("插入的数据为:\n");
p = L->next;
while(p)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
/*
//头插法
for(i=0;i<10;i++)
{
s=(DLinkList)malloc(sizeof(node));
s->data = a[i];
s->next = L->next;
L->next=s;
}
printf("插入的数据为:\n");
p = L->next;
while(p)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
*/
//删除
printf("请输入你要删除的数字\n");
scanf("%d",&x);
p=L->next;
deleteNode(x,L->next);
printf("删除后的数据为:\n");
p = L->next;
while(p)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
return 0;
}