当前位置: 首页 > article >正文

Day4.

单链表

#include <head.h>

typedef struct List{
    int value;
    struct List *pointe;
}*list;
list create_space()
{
    list s=(struct List *)malloc(sizeof(struct List));   //向堆区申请空间
    s->pointe = NULL;//初始化
    s->value = 0;
    return s;
}
list inserhead_list(list head,int value)
{
    list s = create_space();
    if(s == NULL)
    {
        return head;
    }
    s->value = value;
    if(head == NULL)
    {
        head = s;
        return head;
    }else{
        s->pointe = head;
        head = s;
    }
    return head;
}
//头删
list delete_list(list head)
{
    list p = head;
    if(head == NULL)
    {
        free(head);
        return head;
    }
    head = p->pointe;
    free(p);
    return head;
}
void output(list head)
{
    if(head == NULL)
    {
        return; 
    }
    while(head)
    {
        printf("%d ",head->value);
        head = head->pointe;
    }
}


int main(int argc,const char *argv[])
{

    list head = NULL;
    int value;
    for (int i = 0; i < 5; i++)
    {
        printf("请输入插入的值:");
        scanf("%d",&value);
        head = inserhead_list(head,value);
    }
    output(head);
    head=delete_list(head);
    puts("");
    output(head);
    return 0;
}

双链表

#include <head.h>

typedef struct List{
    int value;
    struct List *next;
    struct List *priv;
}*list;
list create_space()
{
    list s=(struct List *)malloc(sizeof(struct List));   //向堆区申请空间
    s->next = NULL;//初始化
    s->priv = NULL;
    s->value = 0;
    return s;
}
头插
list inserhead_list(list head,int value)
{
    list s = create_space();
    if(s == NULL)
    {
        return head;
    }
    s->value = value;
    if(head == NULL)
    {
        head = s;
        return head;
    }else{
        s->next = head;
        head->priv = s;
        head = s;
    }
    return head;
}
//头删
list delete_list(list head)
{
    list p = head;
    if(head == NULL)
    {
        free(head);
        return head;
    }
    head = p->next;
    head->priv = NULL;
    free(p);
    return head;
}
int output(list head)
{
    //1,判断链表为空
    if(NULL ==head)
        return -1;
    //2.正向遍历
    puts("正向遍历");
    list p=head;
    while(p->next!=NULL)
    {
        printf("%d\t",p->value);
        p=p->next;
    }
    printf("%d\t",p->value);

    puts("\n逆向遍历");
    while(p!=NULL)
    {
        printf("%d\t",p->value);
        p=p->priv;    
    }
    puts("");
    return 0;
}

int main(int argc,const char *argv[])
{

    list head = NULL;
    int value;
    for (int i = 0; i < 5; i++)
    {
        printf("请输入插入的值:");
        scanf("%d",&value);
        head = inserhead_list(head,value);
    }
    output(head);
    head=delete_list(head);
    puts("------------");
    output(head);
    return 0;
}


http://www.kler.cn/a/229167.html

相关文章:

  • Oracle 批量投入数据方法总结
  • 怎么在iPhone手机上使用便签进行记录?
  • Autodl转发端口,在本地机器上运行Autodl服务器中的ipynb文件
  • 单片机存储器和C程序编译过程
  • Scala语言的多线程编程
  • http转化为https生成自签名证书
  • Linux【docker 设置阿里源】
  • 杨中科 ASP.NETCORE 高级14 SignalR
  • C++类和对象入门(三)
  • error getting ip from ipam: operation get is not supported on blockkey
  • 88.网游逆向分析与插件开发-物品使用-物品使用策略管理UI的设计
  • 01. k210-命令行环境搭建(ubuntu环境)
  • 自学Java的第二十天
  • 使用Dubbo实现微服务之间的高效通信
  • 肿瘤免疫分型
  • 06-Java适配器模式 ( Adapter Pattern )
  • 2024年Java架构篇之数据结构与算法面试题
  • WINDOWS搭建NFS服务器
  • Redis面试题42
  • 02.02_111期_C++_模板笔记
  • 掌握Linux du命令:高效查看文件和目录大小
  • 一个查看armv8系统寄存器-值-含义的方式
  • k8s学习-Kubernetes的网络
  • 开源免费的物联网网关 IoT Gateway
  • 手拉手Vue3+vite引入echarts
  • vue3.x 英文转换成简体中文