首页 > 其他分享 >c语言单链表

c语言单链表

时间:2023-12-22 21:33:12浏览次数:43  
标签:node 单链 语言 int list next new struct

#include <stdio.h>
#include <stdlib.h>
#define ERROR -1
#define SUCCESS 0
struct list_node
{
   int data;
   struct list_node *next;
   /* data */
};

typedef struct list_node link_list;

int list_get_size(link_list *list)
{
   int count = 0;
   link_list *p = list;
   if(!list)
   {
       return ERROR;
   }
   while(p->next)
   {
       count++;
       p = p->next;
   }
   return count;
}

int list_insert_head(link_list *list, int data)
{
   struct list_node *new = (struct list_node *)malloc(sizeof(struct list_node *));
   new->data = data;
   link_list *p = list;
   while(new->data!=-1)
   {   
       new->next = p->next;
       p->next = new;
       break; 
   }
   return SUCCESS;
}

int list_insert_tail(link_list *list, int data[], int len)
{   
   link_list *r  = list;
   for(int i = 0; i <len; i++)
   {
       struct list_node *new = (struct list_node *)malloc(sizeof(struct list_node *));
       new->data = data[i];

       r->next = new;
       r = new;
   }
   r->next = NULL;
   return ERROR;
}
struct list_node* list_reverse( struct list_node *list)
{
   struct list_node *new_head = NULL;
   while(list)
   {
       struct list_node *new_node = (struct list_node *)malloc(sizeof(struct list_node));
       new_node->data = list->data;
       new_node->next = new_head;
       new_head = new_node;
       list = list->next;
   }
   return new_head;
}
int reverse(link_list *list)
{
   int i = 0;
   struct list_node *p = list;

   while (p->next)
   {
       p = p->next;
       printf("%d\n", list_reverse(p)->data);
   }
   return 0;
}

int list_print(link_list *list)
{
   int i =0;
   struct list_node *p = list;

   while(p->next)
   {
       p = p->next;
       printf("%d:%d\n", i++, p->data);
   }
   return 0;
}
int main(int argc, char const *argv[])
{
   link_list list;
   link_list list1;
   int i =0;
   int data[10] = {1,2,3,4,5,6,7,8,9,0};
   printf("头插法: \n");
   for(int i = 0; i <10; i++)
   {
       list_insert_head(&list, data[i]);
   }

   list_print(&list);
   printf("list len =%d\n", list_get_size(&list));
   printf("尾插法:\n");
   for (int i = 0; i < 10; i++)
   {
       list_insert_tail(&list1, data, 10);
   }
   list_print(&list1);

   printf("链表翻转:\n");
   reverse(&list1);
   return 0;
}

标签:node,单链,语言,int,list,next,new,struct
From: https://www.cnblogs.com/zhaodejin/p/17922406.html

相关文章

  • R语言大学城咖啡店消费问卷调查报告:信度分析、主成分分析可视化
    全文链接:https://tecdat.cn/?p=34656原文出处:拓端数据部落公众号本次调查旨在了解文汇路咖啡店的市场状况,以便为学校周边咖啡店的经营发展提供积极的引导意义。我们通过问卷调查的方式,收集了大量的数据,通过r软件对数据进行了基本情况分析、信度分析、问卷调查数据可视化分析以及......
  • R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油价格时间序列
    原文链接:http://tecdat.cn/?p=22458 原文出处:拓端数据部落公众号 简介本文提供了一个经济案例。着重于原油市场的例子。简要地提供了在经济学中使用模型平均和贝叶斯方法的论据,使用了动态模型平均法(DMA),并与ARIMA、TVP等方法进行比较。希望对经济和金融领域的从业人员和研究......
  • R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集|附代码数据
    原文链接:http://tecdat.cn/?p=22838最近我们被客户要求撰写关于鸢尾花iris数据集的研究报告,包括一些图形和统计输出。本练习问题包括:使用R中的鸢尾花数据集 (a)部分:k-means聚类使用k-means聚类法将数据集聚成2组。画一个图来显示聚类的情况使用k-means聚类法将数据集聚成3组......
  • Smalltalk 语言(面向对象的鼻祖语言)
    基础语法看一下这些基础语法,便能够读懂大部分的代码内容。注释:用双引号包围。"这是注释"字符串:用单引号包围。'这是一个字符串'单个字符:$c符号(Symbol):#thisIsASymbol大家也许对符号这个概念比较陌生。简单来说,只要两个符号的值一样,那么它们在内存中也是相同的对象。变量声明:|a|,......
  • 高级程序设计语言
    1.Java语言概述1.1Java与c++的区别Java中对内存的分配是动态的,C语言通过malloc()和free()这两个库函数来分别实现分配内存和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存。Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变......
  • 计算机 JAVA 语言的基础小总结
    计算机JAVA语言的基础小总结一维数组和二维数组的定义及初始化在Java中,数组是一种数据结构,用于存储多个数据。数组中的元素是相同类型的数据。数组是一个引用数据类型,数组的变量只是一个引用,数组元素和数组变量在内存里是分开存放的。一维数组的定义和初始化一维数组在Jav......
  • android添加c语言的可执行程序
    在android源码的external目录下添加test目录。在test目录下新建test.c文件和Android.mk文件。test.c文件例如:#include<stdio.h>intmain(){printf("helloworld\n");return0;}Android.mk文件:LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LO......
  • 自然语言处理:通过API调用各大公司的机器翻译开放平台
    国内大公司做机器翻译做的比较好的有讯飞和百度,这里给出这两个公司机器翻译的开放平台API的介绍:讯飞开放平台:链接:https://www.xfyun.cn/doc/nlp/xftrans_new/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E百度翻译平台:链接:https://api.fanyi.baidu.com/doc/21......
  • 梭梭带你彻底搞懂YAML序列化语言
    目录前言简介yaml基本语法规则yaml支持的数据结构有三种基本语法大小写敏感用缩进表示层级关系用#表示注释一个文件中可以包含多个文件的内容数据结构与类型对象(Mapping)数组(Sequence)标量(Scalars)字符串(String)布尔值(Boolean)整数(Integer)浮点数(FloatingPoint)空(Null)时间戳(Timestamp)......
  • Go 语言实现高性能分布式锁
    Go语言实现高性能分布式锁原创 源自开发者 源自开发者 2023-12-2207:31 发表于广东 听全文源自开发者专注于提供关于Go语言的实用教程、案例分析、最新趋势,以及云原生技术的深度解析和实践经验分享。49篇原创内容公众号在分布式系统中,实现跨不同......