#include<stdio.h>
#include"stdlib.h" struct student
{
int data;
struct student *pnext;
};
struct students
{
struct students *prev;
int data;
struct students *pnext;
};
struct student *create(int dat); //单链表创造一个节点。
struct students *shuangcreate(int dat); //双链表创造一个节点。 void insert_head(struct student* pH,struct student* news);//单链表头插入
void insert_head_shuang(struct students* pH,struct students* news);//双链表头插入
void insert_tail_shuang(struct students* pH,struct students* news);//尾插入
int main()
{
struct student *ph=create();
struct students *phs=shuangcreate(); insert_head(ph,create());
insert_head(ph,create()); insert_head_shuang(phs,shuangcreate());
insert_head_shuang(phs,shuangcreate());
insert_head_shuang(phs,shuangcreate()); /*
insert_tail_shuang(phs,shuangcreate(1)); //尾插入
insert_tail_shuang(phs,shuangcreate(2)); printf("%d.\n",ph->data);
printf("%d.\n",ph->pnext->data);
printf("%d.\n",ph->pnext->pnext->data);
*/
printf("%d.\n",phs->data);
printf("%d.\n",phs->pnext->data);
printf("%d.\n",phs->pnext->pnext->data);
printf("%d.\n",phs->pnext->pnext->pnext->data); return ;
} struct student *create(int dat) //单链表创造一个节点。
{
struct student *p=(struct student*)malloc(sizeof(struct student));
if(NULL==p)
{
return NULL;
printf("节点分配失败");
}
p->data=dat;
p->pnext=NULL;
return p;
} struct students *shuangcreate(int dat) //双链表创造一个节点。
{
struct students *p=(struct students*)malloc(sizeof(struct students));
if(NULL==p)
{
return NULL;
printf("双链表节点分配失败");
}
p->data=dat;
p->pnext=NULL;
p->prev=NULL;
return p;
}
void insert_head(struct student* pH,struct student* news)
{
news->pnext=pH->pnext;
pH->pnext=news;
}
void insert_tail_shuang(struct students* pH,struct students* news) //双链表的尾插入
{
struct students* ph=pH;
while(NULL!=ph->pnext)
{
ph=ph->pnext;
printf("a\n");
}
ph->pnext=news;
news->prev=ph;
}
//画出双链表的节点链接情况
void insert_head_shuang(struct students* pH,struct students* news) //双链表的头插入
{
struct students* p=pH;
news->pnext=p->pnext;
if(p->pnext!=NULL) //考虑到只有一个头结点的情况。这里很重要 当第一次的时候p->pnext=NULL;
p->pnext->prev=news;
p->pnext=news;
news->prev=p;
}

接下来将会补齐单链表和双链表节点的 遍历 、逆序、和 删除 ;暂且放到这里,

单链表&双链表的头插入&尾插入的更多相关文章

  1. C# 数据结构 - 单链表 双链表 环形链表

    链表特点(单链表 双链表) 优点:插入和删除非常快.因为单链表只需要修改Next指向的节点,双链表只需要指向Next和Prev的节点就可以完成插入和删除操作. 缺点:当需要查找某一个节点的时候就需要一 ...

  2. 数据结构与算法之PHP实现链表类(单链表/双链表/循环链表)

    链表是由一组节点组成的集合.每个节点都使用一个对象的引用指向它的后继.指向另一个节点的引用叫做链表. 链表分为单链表.双链表.循环链表.   一.单链表 插入:链表中插入一个节点的效率很高.向链表中插 ...

  3. C#数据结构与算法系列(六):链表——双链表(Double-LinkedList)

    1.对比单向链表 单向链表查找的方向只能是一个方向,而双向链表可以向前或者向后查找 单向链表不能自我删除,需要靠辅助节点,而双向链表可以自我删除 对于单向链表的删除,我们首先要找到单向链表待删除节点的 ...

  4. Python与数据结构[0] -> 链表/LinkedList[1] -> 双链表与循环双链表的 Python 实现

    双链表 / Doubly Linked List 目录 双链表 循环双链表 1 双链表 双链表和单链表的不同之处在于,双链表需要多增加一个域(C语言),即在Python中需要多增加一个属性,用于存储指 ...

  5. 双链表的基本实现与讲解(C++描述)

    双链表 双链表的意义 单链表相对于顺序表,确实在某些场景下解决了一些重要的问题,例如在需要插入或者删除大量元素的时候,它并不需要像顺序表一样移动很多元素,只需要修改指针的指向就可以了,其时间复杂度为 ...

  6. 新秀nginx源代码分析数据结构篇(两) 双链表ngx_queue_t

    nginx源代码分析数据结构篇(两) 双链表ngx_queue_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...

  7. JAVA 链表操作:单链表和双链表

    主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...

  8. 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现

    0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...

  9. 【Weiss】【第03章】练习3.3:通过交换指针交换单/双链表元素

    [练习3.3] 通过之调整指针(而不是数据)来交换两个相邻的元素,使用 a.单链表 b.双链表 Answer: 先放测试代码,折叠标题可以看到分别是哪种链表的测试. 实测可满足题意,但单链表和双链表的 ...

随机推荐

  1. Go开发之路 -- 流程控制

    1. if else if 条件 { } else { // else必须写在这里 } // 写一个程序, 从终端读取输入, 并转成整数. 如果转成整数出错, // 则输出'can not conve ...

  2. HTML和CSS前端教程05-CSS盒模型

    目录 1. CSS盒模型 1.1 元素的尺寸 1.2. 元素内边距 padding 1.3. 元素外边距 margin 1.4. 处理溢出overflow 1.5. 元素的可见性Visibility ...

  3. 命令行以及Python交互模式下python程序的编写

    一.命令行模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\>: 二.Python交互模式 在命令行模式下敲命令python,就看到类似如下的一堆文本输出 ...

  4. Android为TV端助力 eclipse build project 出现major.minor version 52.0的问题

    那些网上说的JDK什么的的问题,我求你们不要误人子弟好吗? 出现在这个的原因就是ADT也就是你的SDK manager 的Tools版本跟你的SDK版本不兼容,如果你的是SDK 23.0.2那你的To ...

  5. iOS 12.1 跳转页面时 tabBar闪动

    最新iOS 12.1系统,self.hidesBottomBarWhenPushed = YES,tabBar发生闪动 设置为不透明就行了.[[UITabBar appearance] setTran ...

  6. GDB调试指南-启动调试

    前言 GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, ...

  7. Postman安装及入门教程

    安装 本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,http ...

  8. Springboot项目配置druid数据库连接池,并监控统计功能

    pom.xml配置依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> & ...

  9. 【Python 05】Python开发环境搭建

    Python3安装和使用 1.安装 Python管方下载地址 选择Customize installation安装,并且勾选Add Python 3.X to PATH. 勾选Documentatio ...

  10. 在windows下远程访问linux桌面

    一.安装xrdp工具: #  yum install xrdp #   yum install tigervnc-server #   service xrdp start 以上三个命令执行完毕安装完 ...