1、设计一个算法,在双链表中值为y的结点前面插入一个值为x的新结点,即使得值为x的新结点成为值为y的结点的前驱结点。
2、设计一个算法,将一个双链表改建成一个循环双链表。
#include <stdio.h>
#include <stdlib.h>
typedef struct dlink_node
{
int info;
struct dlink_node *llink,*rlink;
}dnode;
dnode *init()
{
return NULL;
}
void display1(dnode *head)
{
dnode *p;
p=head;
if(!p)
{
printf("display1 none\n");
return ;
}
while(p)
{
printf("%5d",p->info);
p=p->rlink;
}
printf("\n");
return ;
}
dnode *creat(dnode *head)
{
int x;
dnode *p,*q;
scanf("%d",&x);
while(x!=-1)
{
p=(dnode*)malloc(sizeof(dnode));
p->info=x;
if(!head)
{
p->llink=NULL;
p->rlink=NULL;
head=p;
q=p;
}
else
{
q->rlink=p;
p->llink=q;
q=p;
p->rlink=NULL;
}
scanf("%d",&x);
}
return head;
}
dnode *rear(dnode *head)
{
dnode *p