double.c

来源:互联网 发布:mac应用删除 编辑:程序博客网 时间:2024/04/29 13:12
#include <stdio.h>
#include<stdlib.h>
struct dblnode
{
    int num;
    struct dblnode *prior,*next;
};
typedef struct dblnode Dblnode;
typedef struct dblnode *Dbllink;
int is_malloc_ok(Dbllink * new_node)
{
    if((*new_node)==NULL)
    {
        printf("fail!\n");
        exit(1);
    }
    return 0;
}
int create_dbllink(Dbllink *head)
{
    *head=(Dbllink)malloc(sizeof(Dblnode));
    is_malloc_ok(head);
    (*head)->next=(*head)->prior=*head;
    return 0;
}
int create_newnode(Dbllink *new_node)
{
    (*new_node)=(Dbllink)malloc(sizeof(Dblnode));
    is_malloc_ok(new_node);
    return 0;
}
int insert_node_head(Dbllink *head,Dbllink *new_node)
{
    (*head)->next->prior=*new_node;
    (*new_node)->prior=(*head);
    (*new_node)->next=(*head)->next;
    (*head)->next=*new_node;
    if((*head)->prior==*head)
    {
        (*head)->prior=*new_node;
    }
    return 0;
}
int insert_node_tail(Dbllink *head,Dbllink *new_node)
{
    (*head)->prior->next=*new_node;
    (*new_node)->next=*head;
    (*new_node)->prior=(*head)->prior;
     (*head)->prior=*new_node;
     return 0;
}
int display_link_forword(Dbllink *head)
{
    Dbllink temp=(*head)->next;
    while(temp!=*head)
    {
        printf("num=%d\n",temp->num);
            temp=temp->next;
    }
        printf("\n");
    return 0;
}
int display_link_backword(Dbllink *head)
{
    Dbllink temp=(*head)->prior;
    while(temp!=*head)
    {
        printf("num=%d\n",temp->num);
        temp=temp->prior;
    }
    printf("\n");
    return 0;
}
int del_node(Dbllink *head,int num)
{
    Dbllink temp=(*head)->next;
    while(temp->num!=num)
    {
        temp=temp->next;
    }
    temp->prior->next=temp->next;
    temp->next->prior=temp->prior;
    free(temp);
    return 0;
}
int release_link(Dbllink *head)
{
   Dbllink temp=*head;
   while(temp->next!=*head)
   {     
       temp=temp->next;
       free(temp);
   }
   return 0;
}
int mid_link(Dbllink *head,Dbllink *new_node,int num)
{
    Dbllink temp;
    temp = *head;
    while(temp->num != num && temp->next != NULL)
    {                                                        temp = temp->next;                                     }
     if(temp->num == num)                                   {                                                     (*new_node)->next = temp->next;                               temp->next =(*new_node);                                }
        else                                                {                                                           printf("no such node!\n");
        }
    }
int main()
{
    Dbllink head=NULL;
    Dbllink new_node=NULL;
    int i;
    int num;
    create_dbllink(&head);
    for(i=0;i<10;i++)
    {
        create_newnode(&new_node);
        new_node->num=i;
    }
  //  printf("please input a num\n");
  //  scanf("%d",&num);
//  create_newnode(&new_node);
//  new_node->num=num;
//  insert_node_tail(&head,&new_node);
    release_link(&head);
    display_link_forword(&head);
    return 0;
}
0 0
原创粉丝点击