教学内容:
循环双链表
建立循环双链表
循环链表里插入结点
遍历循环链表 双向链表结构定义
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. AIX解压ZIP文件

    AIX系统自身是没有解压ZIP文件的,但在AIX安装oracle数据库服务器的话,在$ORACLE_HOME/bin路径下方却有unzip命令,可以解压ZIP文件. 一.shell脚本   之前的版本 ...

  2. HelloAndroid

    Hello Android 代码 button.setOnClickListener { val alertDialog = AlertDialog.Builder(this) alertDialog ...

  3. MapReduce实例2(自定义compare、partition)& shuffle机制

    MapReduce实例2(自定义compare.partition)& shuffle机制 实例:统计流量 有一份流量数据,结构是:时间戳.手机号.....上行流量.下行流量,需求是统计每个用 ...

  4. win命令行环境编码设置为utf-8

    win命令行环境编码默认为gbk,有时运行文件编码为utf-8,会导致编码错误,可以修改注册表进行设置环境编码. win+r =>regedit 找到 计算机\HKEY_CURRENT_USER ...

  5. Ceph PG介绍及故障状态和修复

    1 PG介绍pg的全称是placement group,中文译为放置组,是用于放置object的一个载体,pg的创建是在创建ceph存储池的时候指定的,同时跟指定的副本数也有关系,比如是3副本的则会有 ...

  6. 一些需要禁用的PHP危险函数

    phpinfo()功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.危险等级:中 passthru()功能描述:允许执行一个外部程序并回显输出,类似于 exec().危险等级:高 e ...

  7. 关于Golang中database/sql包的学习

    go-sql-driver 请求一个连接的函数有好几种,执行完毕处理连接的方式稍有差别,大致如下: db.Ping() 调用完毕后会马上把连接返回给连接池. db.Exec() 调用完毕后会马上把连接 ...

  8. log4j配置不生效

    可能原因是打包时候log4j.properties没有在classpath下面或者是加载时候被其他第三方jar包中的log4j.properties文件覆盖掉了,可以使用如下命令进行查看log4j具体 ...

  9. Codeforces 1130 E.Wrong Answer 构造

    题目要求构造一组数据使得题目给出代码的anwser和正确答案恰好相差k,我们记题目给出代码的输出为ans1,正确答案为ans2. 我们假设已经有总和为s的p个正数,使得此时的ans1=ans2=s*p ...

  10. openresty + orange centos7 安装

    Orange Orange是一个基于OpenResty的API网关.除Nginx的基本功能外,它还可用于API监控.访问控制(鉴权.WAF).流量筛选.访问限速.AB测试.动态分流等.它有以下特性: ...