正向链表(内容按输入顺序输出)

正向链表要保持头指针不动,把尾指针(链表的最后一个节点的地址)的指针域指向新创建的节点的地址,以此循环。

#include<stdio.h>
#include<stdlib.h>
typedef struct node {//定义一个节点,并且将struct node的名字改为nodeint value;//数据域struct node* next;//指针域
} node;
node* creatnode(node*tail) {//创建链表函数,传入的是最后一个节点的地址node* newnode;//创建结构体指针储存新生成的节点的地址if (tail != NULL) {//如果不写这个if生成第一个节点时,下一行的tail->next会出问题newnode = tail->next = (node*)malloc(sizeof(node));//把最后一个节点的指针域指向新生成的节点newnode->next = NULL;//新生成的节点的指针域赋值为空} else {newnode = (node*)malloc(sizeof(node));newnode->next = NULL;}return newnode;//返回新生成的节点,下面使用的时候会赋值给tail也就是尾节点
}
void printvalue(node*head) {//输出函数do {printf("%d ", head->value);head = head->next;} while (head != NULL);
}
int main() {node* head = NULL, *tail = NULL;//tail是尾节点,存贮最后一个节点的地址int n, i;printf("please input how many do you want?\n");scanf("%d", &n);for (i = 0; i < n; i++) {tail = creatnode(tail);//函数返回的就是新生成的节点的地址,赋值给tailscanf("%d", &(tail->value));//对新生成的节点的数据域赋值if (head == NULL)//把头指针赋值为第一个节点的地址head = tail;}printvalue(head);system("pause");return 0;
}

反向链表(输出时和输入顺序相反)

反向链表的头指针时刻指向新生成的节点,新生成的节点的指针域指向上一个生成的节点。

#include<stdio.h>
#include<stdlib.h>
typedef struct node {//定义一个节点,并且将struct node的名字改为nodeint value;//数据域struct node* next;//指针域
} node;
node* creatnode(node* head) { //创建链表函数,传入的是链表头的地址node* head_l = head; //head_l用来缓存上一个node的地址head = (node*)malloc(sizeof(node)); //申请一个node的内存,并返回这块内存的地址(也就是新结构体node的地址)作为链表的头地址head->next = head_l;//把新申请的node的指针域指向上一个node的地址return head;//返回新申请的node的地址
}
void printvalue(node* head) {//输出链表的数据do {printf("%d\n", head->value);head = head->next;} while (head != NULL);
}
int main() {node* head = NULL;//赋值为空,当第一个节点申请时会把第一个节点的指针域赋值为NULLint n, i;printf("please input how many do you want?\n");scanf("%d", &n);for (i = 0; i < n; i++) {head = creatnode(head);scanf("%d", &(head->value));}printvalue(head);system("pause");return 0;
}

C语言简单的链表的创建(正向和反向)相关推荐

  1. c语言实现单链表的创建(完整版)

    使用c语言实现单链表是考研的重点.但是如何实现却是一个难点.下面是我写的一个简单的创建单链表的代码. #include<stdio.h> #include<stdlib.h> ...

  2. 关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例

    #include<stdio.h> #include<stdlib.h>#define OK 1 #define ERROR -1 /*******************定义 ...

  3. c语言递归建链表,递归创建二叉树c语言实现+详细解释

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void CreatBiTree(BiTree T) { char a; scanf("%c",&a); if(a=='@') ...

  4. c语言实现可变单链表,c语言实现单链表

    c语言实现单链表 c语言实现单链表 定义 创建 销毁 清空 打印 获取长度 查询 删除第pos个结点 在第pos插入结点 定义 首先来看一看单链表的定义(看看百度的) 单链表是一种链式存取的数据结构, ...

  5. 【C语言】顺序表的创建

    一.代码实现部分: 1.顺序表是线性表的基础部分,至于顺序表,在本人看来无异于数组.至于线性表的概念,在此不再赘述.接下来尝试利用C语言对线性表中的顺序表进行代码实现(此程序中规定用户输入的数据类型为 ...

  6. (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作

    http://blog.csdn.net/fisherwan/article/details/19754585 昨天写了单向链表的代码,今天上午把单向循环链表的程序给敲完了.链表的相关操作一样的,包含 ...

  7. java静态链表_静态链表及其创建(C语言实现)

    <顺序表和链表优缺点>一节,我们了解了两种存储结构各自的特点,那么,是否存在一种存储结构,可以融合顺序表和链表各自的优点,从而既能快速访问元素,又能快速增加或删除数据元素. 静态链表,也是 ...

  8. C语言数据结构篇——单循环链表的创建,插入,节点删除,打印等操作

     作者名:Demo不是emo  主页面链接:主页传送门 创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CS ...

  9. C语言数据结构篇——双链表的创建,插入,节点删除,打印等操作

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CSD ...

最新文章

  1. Cell子刊:人类微生物组参考基因集中的单体基因
  2. chrome 插件开发心得
  3. java流的传递方式是_如何在方法中流式传输Java List(Varargs)的值?
  4. c语言如何用循环语句一个字一个字的输出,怎样用c语言的for嵌套循环,用·画出泳字,求解,主要是怎样用循环语句打出,在某一行中既有空格又有·...
  5. 【LeetCode笔记】148. 排序链表(Java、归并排序、快慢指针、双重递归)
  6. Python赋值与深浅拷贝
  7. 计算机可以待机无法关机,win7怎么设置不待机?如何设置自动关机的方法【详解】...
  8. Unreal Engine 4切换默认Camera实现
  9. ubuntu启动脚本的一些笔记
  10. 区块链项目开发指南大纲
  11. 使用Qt框架开发http服务器问题的记录
  12. python使用递归、尾递归、循环三种方式实现斐波那契数列
  13. 银行IT系统-整体架构
  14. 在CentOS7虚拟机中安装mysql5.7
  15. 不可多得的干货!双非渣本Android四年磨一剑,终局之战
  16. vmbox 宿主机ssh登录虚拟机
  17. ElasticSearch系列——Kibana,核心概念
  18. 使用Python批量替换csdn文章的图片链接(解决csdn无法加载第三方图床的问题)
  19. 【路径规划】基于matlab蚁群算法机器人大规模栅格地图最短路径规划【含Matlab源码 1860期】
  20. 三叶玫瑰线的膨胀(Mathematica演示)

热门文章

  1. JTAG、JLink、ULINK、ST-LINK仿真器区别
  2. 多核CPU的运行模式详解
  3. 请假工资扣费总额计算机公式,病假扣款计算公式excel
  4. 瑞数5维普期刊js逆向
  5. 【pytest】三、pytest用例管理框架的前后置(固件、夹具)setup和teardown,及封装
  6. Flink之DataSet迭代计算
  7. HaLoop—适用于迭代计算的Hadoop
  8. 为什么微软是数字时代的领头羊?
  9. 机器学习之监督学习:分类
  10. win10易升_小科普 | 彻底关闭Win10自动更新