1. #include<stdio.h>
    2. #include<malloc.h>
    3. typedef struct DuLNode
    4. {
    5. int data;
    6. struct DuLNode *prior;
    7. struct DuLNode *next;
    8. }DuLNode;
    9. DuLNode * InitList()
    10. {
    11. DuLNode *head,*p,*q;
    12. int a;
    13. printf("创建一个链表:\n");
    14. head=(DuLNode *)malloc(sizeof(DuLNode));
    15. head->next=NULL;
    16. head->prior=NULL;
    17. p=head;
    18. scanf("%d",&a);
    19. while(a<=0)
    20. {
    21. printf("您所输入的数据有误,请重新输入\n");
    22. scanf("%d",&a);
    23. }
    24. while(a>0)
    25. {
    26. q=(DuLNode *)malloc(sizeof(DuLNode));
    27. //q->next=NULL;
    28. q->data=a;
    29. q->prior=p;
    30. p->next=q;
    31. p=p->next;
    32. //scanf("%d",&a);
    33. }
    34. return head;
    35. }
    36. void insert(DuLNode *p,DuLNode *q)
    37. {
    38. q->prior=p;
    39. q->next=p->next;
    40. (p->next)->prior=q;
    41. p->next=q;
    42. }
    43. void delete (DuLNode *p)
    44. {
    45. (p->prior)->next=p->next;
    46. (p->next)->prior=p->prior;
    47. }
    48. main()
    49. {
    50. struct DuLNode *a;
    51. a=InitList();
    52. printf("输出列表");
    53. a=a->next;
    54. while(a!=NULL)
    55. {
    56. printf ("%d",a->data );
    57. a=a->next ;
    58. }
    59. }