【循环双链表算法】设一个带头结点的循环双链表 DL,结点的值可能重复。设
计一个算法输出 DL 所有元素的值,参数 d=0 时按照前驱方向输出,d=1 时按照
后继方向输出。
#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
struct node* prior;
struct node* next;
}node;
struct node* create(int length){
int i=1;
int n;
node* p;
node* head=(node*)malloc(sizeof(node));
head->next=NULL;
head->prior=NULL;
node* temp=head;
if(length<1){
printf("error");
return NULL;
}
else{
printf("Input %d data:\n",length);
while(i<=length){
p=(node*)malloc(sizeof(node));
scanf_s("%d",&n);
p->data=n;
temp->next=p;
p->prior=temp;
temp=p;
i++;
}
temp->next=head;
head->prior=temp;
return head;
}
}
void print(node* L,int n,int d){
node *p;
int i=0;
if(d==1){
printf("按照后继方向输出为:\n");
p=L->next;
while(i<n){
printf("%d ",p->data);
p=p->next;
i++;
}
}
else {
printf("按照前继方向输出为:\n");
p=L->prior;
while(i<n){
printf("%d ",p->data);
p=p->prior;
i++;
}
}
}
int main(){
node* L;
int n,m;
printf("Input length n:");
scanf("%d",&n);
printf("Input d:");
scanf("%d",&m);
L=create(n);
print(L,n,m);
return;
}
刚学数据结构的新手一个,有啥问题欢迎指出,共同进步