循环双链表

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:11:37
#include<stdio.h>
struct DNode{
int data;
struct DNode *prior;
struct DNode *next;
}DNode,*Node;
/************生成循环双链表函数**********************/
Node CreateDoubleList()
{Node head,r,L;
int x,c;
r=head=(Node)malloc(sizeof(DNode)); //生成头结点
do{
printf("请输入结点的值:");
scanf("%d",&x);
L=(Node)malloc(sizeof(DNode));
L->data=x;
r->next=L;
L->prior=r;
r=L;
printf("\n是否继续生成结点?是按数字键1,否按除1以外数字键!");
scanf("%d",&c);
}while(c==1);
r->next=head; //生成了循环链表
head->prior=r;
return head;
}
/***************将两个循环双链表连接函数************************/
void DlistConcat(Node ha,Node hb)
{Node p,q,r;
p=ha->prior;//p为la的最后一个结点
q=hb->next; //q为lb的第一个结点
r=hb->prior;//r为lb的最后一个结点
p->next=q; //以下为形成新的循环双链表代码
q->prior=p

#include<stdio.h>
#include<malloc.h> //加了这行
typedef struct DNode{ //这行加了个typedef
int data;
struct DNode *prior;
struct DNode *next;
}DNode,*Node;
/************生成循环双链表函数**********************/
Node CreateDoubleList()
{
Node head,r,L;
int x,c;
r=head=(Node)malloc(sizeof(DNode)); //生成头结点
do{
printf("请输入结点的值:");
scanf("%d",&x);
L=(Node)malloc(sizeof(DNode));
L->data=x;
r->next=L;
L->prior=r;
r=L;
printf("\n是否继续生成结点?是按数字键1,否按除1以外数字键!");
scanf("%d",&c);
}while(c==1);
r->next=head; //生成了循环链表
head->prior=r;
return head;
}
/***************将两个循环双链表连接函数************************/
void DlistConcat(Node ha,Node hb)
{
Node p,q,r;
p=ha->prior;//p为la的最后一个结点
q=hb->next; //q为lb的第一个结点
r=hb->prior;//r为lb的最后一个结点
p->n