关于循环链表实现的问题啊,求解
刚刚写了个循环链表的实现但是出现了错误,一直解决不了。主要环境是linux下的gcc,
先贴下代码:
Dlinkedlist.h
#ifndef DLINKEDLIST_H#define DLINKEDLIST_H#define Len sizeof(struct DLinear_List)typedef struct DLinear_List{ int num; struct DLinear_List *next,*before;}*DLinkList;struct DLinear_List *CreateDList(DLinkList L);void Print(DLinkList L);struct DLinear_List *SortingDList(DLinkList L ,int length);struct DLinear_List *Del_Node_DList(DLinkList L ,int num);struct DLinear_List *Add_Node_DList(DLinkList L ,struct DLinear_List *Node);struct DLinear_List *Del_DList(DLinkList L);struct DLinear_List *Empty_DList(DLinkList L);int DLinear_List_Length(DLinkList L);#endif#include "Dlinkedlist.h"#include<stdio.h>#include<stdlib.h>struct DLinear_List *CreateDList(DLinkList L){ DLinkList p1; DLinkList p2; int i=0; p1=(DLinkList)malloc(Len); p2=p1; if(NULL==p1) { printf("\nCann't creat it ,try again in a moment!\n"); exit(1); }else { printf("Please input %d node--num: ",i+1); scanf("%d",&(p1->num)); } while(p1->num!=0&&p1->num>0) { if(0==i) { L=p1; L->before=L; L->next=L; }else { p2->next=p1; p1->before=p2; } p2=p1; ++i; p1=(DLinkList)malloc(Len); printf("Please input %d node--num: ",i+1); scanf("%d",&(p1->num)); }; p2->next=L; L->before=p2; free(p1); p1=NULL; return L;}void Print(DLinkList L){ DLinkList p; if(NULL== L) { printf("\nIt is an empty Dlinkedlist!\n"); exit(0); } else { p=L; //do{ // printf("%o %o %d %o\n",p->before,p,p->num,p->next); // p=p->next; //}while(p->next!=L); while(p) { printf("%o %o %d %o\n",p->before,p,p->num,p->next); p=p->next; if(p->next==L) { break; } } }}#include<stdio.h>#include<stdlib.h>#include "Dlinkedlist.h"void main(){ DLinkList head; head=CreateDList(head); Print(head);}[zhangjie@localhost Double_Linked_List]$ ./main Please input 1 node--num: 1Please input 2 node--num: 2Please input 3 node--num: 3Please input 4 node--num: 4Please input 5 node--num: 5Please input 6 node--num: 6Please input 7 node--num: 7Please input 8 node--num: 8Please input 9 node--num: 9Please input 10 node--num: 01054630210 1054630010 1 10546300301054630010 1054630030 2 10546300501054630030 1054630050 3 10546300701054630050 1054630070 4 10546301101054630070 1054630110 5 10546301301054630110 1054630130 6 10546301501054630130 1054630150 7 10546301701054630150 1054630170 8 1054630210
如需要阅读该回复,请登录或注册CSDN!