教学内容:
循环双链表
建立循环双链表
循环链表里插入结点
遍历循环链表 双向链表结构定义
struct stu_data
{
char name[];//学生名字
struct mytime stuTime;//签到时间
struct stu_data* front; //指向前一个结点
struct stu_data* back; //指向后一个结点 } ;
建立双向链表
头指针Head
尾部指针Tail
插入结点 //建立头结点
Head=tail=p= malloc(sizeof( struct stu_data)); //
memset(stu,,sizeof( struct stu_data)); //初始化内存区域 //尾部插入新结点 操作
stu= malloc(sizeof( struct stu_data)); //分配结点内存空间
memset(stu,,sizeof( struct stu_data)); //初始化内存区域
//结点数据填充。。。
stu->front=p; //新结点指向前驱
stu->back=NULL; //新结点尾指针置空
p->back=stu; //前驱结点back指针指向新结点
p=stu; //重要移动标志指针
tail=stu;//可有可无的
//循环链表
Head->front=tail;
tail->back=Head;
A= Head front back
NULL B
B
A C
C
B NULL
// A= Head front back
D B
B
A C
C
B D
D
C A 遍历链表 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <time.h> int main(int argn,char* argv[])// int a[1]//a[0]
{ struct mytime
{
//char name[256];
int hour;//时
int min; //分
int sec; //秒
}; struct stu_data
{
char name[];//学生名字
struct mytime stuTime;//签到时间
struct stu_data* front; //指向前一个结点
struct stu_data* back; //指向后一个结点 } ;
struct mytime t2;
struct stu_data *stu,*p,*Head,*tail; time_t t;// long int
struct tm * timfo;
int i; //建立Head头结点
Head=p=tail=malloc(sizeof( struct stu_data)); //256+12=268
memset(p,,sizeof( struct stu_data));
strcpy(Head->name,"头结点"); do
{//插入新的结点
stu= malloc(sizeof( struct stu_data)); //
memset(stu,,sizeof( struct stu_data)); //初始化内存区域 //stu->back=NULL; //新结点尾指针置空
//p->back=stu; //前驱结点back指针指向新结点
//p=stu; //重要移动标志指针 stu->front=p; //新结点指向前驱 2
stu->back=NULL; //新结点尾指针置空
p->back=stu; //前驱结点back指针指向新结点
p=stu; //重要移动标志指针
tail=stu;//可有可无的 2 scanf("%s",&stu->name);
time(&t);
timfo= localtime(&t); //取当前系统时间
stu->stuTime.hour=timfo->tm_hour;//时
stu->stuTime.min=timfo->tm_min;//分
stu->stuTime.sec=timfo->tm_sec;//秒
//构建循环链表
Head->front=stu;
tail->back=Head; } while(strcmpi(stu->name,"exit")!=); //初始指针p 使他头结点Head
stu=Head->back;
do
{
printf("%s,到校时间:%d时%d分%d秒\n",stu->name, stu->stuTime.hour, stu->stuTime.min, stu->stuTime.sec); stu=stu->back;
} while (strcmpi(stu->name,"exit")); //初始指针p 使他尾部结点tail
stu=tail->front;
do
{
printf("%s,到校时间:%d时%d分%d秒\n",stu->name, stu->stuTime.hour, stu->stuTime.min, stu->stuTime.sec); stu=stu->front;
} while ( stu!=Head); getchar();
getchar(); return ;
}

c++ 双向循环链表的更多相关文章

  1. 双向链表、双向循环链表的JS实现

    关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法:  单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...

  2. C语言通用双向循环链表操作函数集

    说明 相比Linux内核链表宿主结构可有多个链表结构的优点,本函数集侧重封装性和易用性,而灵活性和效率有所降低.     可基于该函数集方便地构造栈或队列集.     本函数集暂未考虑并发保护. 一  ...

  3. 双向循环链表的Java版本实现

    1.单项循环列表 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环.和单链表相比,循环单链表的长处是从链尾到链 ...

  4. c语言编程之双向循环链表

    双向循环链表就是形成两个环,注意每个环的首尾相连基本就可以了. 程序中采用尾插法进行添加节点. #include<stdio.h> #include<stdlib.h> #de ...

  5. Linux内核中的通用双向循环链表

    开发中接触Linux越来越多,休息放松之余,免不了翻看翻看神秘的Linux的内核.看到双向链表时,觉得挺有意思的,此文记下. 作为众多基础数据结构中的一员,双向循环链表在各种“教科书”中的实现是相当的 ...

  6. java与数据结构(4)---java实现双向循环链表

    线性表之链式存储结构双向循环链表 双向循环链表:每个结点包含了数据.直接前驱地址指针和直接后驱地址指针,头结点的直接前驱指向尾结点,尾结点的直接后驱指向头结点,头尾相连构成一个可正可反的圆环.可以形象 ...

  7. 基于visual Studio2013解决算法导论之025双向循环链表

     题目 双向循环链表 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #in ...

  8. 双向循环链表(C语言描述)(四)

    下面以一个电子英汉词典程序(以下简称电子词典)为例,应用双向循环链表.分离数据结构,可以使逻辑代码独立于数据结构操作代码,程序结构更清晰,代码更简洁:电子词典的增.删.查.改操作分别对应于链表的插入. ...

  9. 双向循环链表(C语言描述)(一)

    双向循环链表是链表的一种,它的每个节点也包含数据域和指针域.为了方便程序维护,可以单独为数据域定义一种数据类型,这里以整型为例: typedef int LinkedListData; 双向循环链表( ...

  10. python实现 双向循环链表

    最近身边的朋友在研究用python来实现数据结构.遇到一个问题就是双向循环链表的实现,改指向的时候总是发蒙. 我自己尝实现了一个python的双向循环链表.附上代码,希望对大家有帮助. 如果不懂什么是 ...

随机推荐

  1. 关于nicescroll滚动条现在浏览器上滚动问题

    nativeparentscrolling: false //检测内容底部,并让父节点来滚动,作为原生滚动 有时候 当自定义滚动条在底部 滚动无效 可以把这个参数设置一下

  2. 显示脉冲效果的PulsingView

    显示脉冲效果的PulsingView 效果如下: 源码: PulsingView.h 与 PulsingView.m // // PulsingView.h // PulsingView // // ...

  3. Ubuntu下安装指定版本的mysql

    1.编辑/etc/apt/sources.list和/etc/apt/sources.list.save, 手动加上deb http://archive.ubuntu.com/ubuntu trust ...

  4. CentOS7 防火墙(firewall)的操作命令

    CentOS7 防火墙(firewall)的操作命令 安装:yum install firewalld 1.firewalld的基本使用 启动: systemctl start firewalld 查 ...

  5. 【译文】MySQL InnoDB 使用的锁分析

    InnoDB 使用的 锁类型 共享锁和排它锁 意向锁 记录锁 间隙锁 Next-key 锁 插入意向锁 AUTO-INC 锁 共享锁和排他锁 InnoDB实现了俩个标准的行级锁,共享锁和排它锁. 共享 ...

  6. Sublime Text 3中文乱码

    Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示: ...

  7. Java & Groovy & Scala & Kotlin - 20.Switch 与模式匹配

    Overview 本章主要介绍高级条件语句中的 switch 语句以及其增强版的模式匹配. Java 篇 Switch 特点 Java 中 switch 语句功能类似 if,但是 switch 主要用 ...

  8. Spring-IOC 在非 web 环境下优雅关闭容器

    当我们设计一个程序时,依赖了Spring容器,然而并不需要spring的web环境时(Spring web环境已经提供了优雅关闭),即程序启动只需要启动Spring ApplicationContex ...

  9. 1818: [Cqoi2010]内部白点

    Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1394 Solved: 625 [Submit][Status][Discuss] Descriptio ...

  10. HBase学习之路 (三)HBase集群Shell操作

    进入HBase命令行 在你安装的随意台服务器节点上,执行命令:hbase shell,会进入到你的 hbase shell 客 户端 [hadoop@hadoop1 ~]$ hbase shell S ...