2024-07-30作业

导图

运行结果

主函数和点H函数

点C程序

#include "two-way.h"

linkPtr create()
{
    linkPtr L=(linkPtr)malloc(sizeof(link));
    if(NULL==L)
    {
        printf("创建失败\n");
        return NULL;
    }
    L->len=0;
    L->next=L;
    L->prior=L;
    printf("创建成功\n");
    return L;
}
//判空
int empty(linkPtr L)
{
    if(NULL==L)
    {
        printf("判空失败\n");
        return -1;
    }
    return L->len==0;
}
//尾插
int tail_add(linkPtr L,DataType e)
{
    if(NULL==L)
    {
        printf("尾插失败\n");
        return 0;
    }
    //申请节点,封装数据
    linkPtr L2=(linkPtr)malloc(sizeof(link));
    if(NULL==L2)
    {
        printf("尾插失败\n");
        free(L);
        L=NULL;
        return 0;
    }
    linkPtr P=L;
    /*
        L->prior=L2;
        P=P->prior;
        L2->prior=P;*/
    
    for(int i=0;i<L->len;i++)
    {
        P=P->next;
    
    }
        //next的指向
        P->next=L2;
        L2->next=L;
        //prior的指向
        L2->prior=P;
        L->prior=L2;

        L2->data=e;
        L->len++;
        return 1;
}
//遍历
void show(linkPtr L)
{
    if(NULL==L || empty(L))
    {
        printf("遍历失败\n");
        return ;
    }
    linkPtr P=L;
    for(int i=0;i<L->len;i++)
    {
        P=P->next;
        printf("%d ",P->data);
    }
    printf("\n");
}
//prior遍历
void Pshow(linkPtr L)
{
    if(NULL==L || empty(L))
    {
        printf("遍历失败\n");
        return ;
    }
    linkPtr P=L;
    for(int i=0;i<L->len;i++)
    {
        P=P->prior;
        printf("%d ",P->data);
    }
    printf("\n");
}
//尾删
int tail_del(linkPtr L)
{
    if(NULL==L || empty(L))
    {
        printf("遍历失败\n");
        return 0;
    }
    linkPtr P=L;

         P=P->prior;
        printf("尾删除%d\n",P->data);
        L->prior=P->prior;
        P->prior->next=L;
        free(P);

/*    for(int i=0;i<L->len-1;i++)
    {
        P=P->next;
    }
    printf("尾删除%d\n",P->next->data);
    
    free(P->next);
    P->next=L;
    L->prior=P;*/
    L->len--;
    return 1;
}
//销毁
void my_free(linkPtr L)
{
    if(NULL==L || empty(L))
    {
        printf("遍历失败\n");
        return ;
    }
    while(L->len!=0)
    {
        tail_del(L);
    }
    free(L);
    L=NULL;
    printf("已全部销毁\n");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值