读书人

关于循环链表实现的有关问题啊求解

发布时间: 2012-03-20 14:01:11 作者: rapoo

关于循环链表实现的问题啊,求解
刚刚写了个循环链表的实现但是出现了错误,一直解决不了。主要环境是linux下的gcc,
先贴下代码:
Dlinkedlist.h

C/C++ code
#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

Dlinkedlist.c
C/C++ code
#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;             }        }    }}


main.c
C/C++ code
#include<stdio.h>#include<stdlib.h>#include "Dlinkedlist.h"void main(){    DLinkList head;    head=CreateDList(head);    Print(head);}

出错情况如下:
C/C++ code
[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

为什么最后的一个数‘9’怎么显示不了阿,我在vs2010下一步步的调试都没有发现问题出在那?各位大大帮忙看看,感激不尽阿。

[解决办法]

如需要阅读该回复,请登录或注册CSDN!


[解决办法]
1054630210 1054630010 1 1054630030

1054630150 1054630170 8 1054630210

这已经构成完整的链了,首尾相接

读书人网 >C语言

热点推荐