zoukankan      html  css  js  c++  java
  • c++ 双向循环链表

    
    教学内容:  
    循环双链表
    建立循环双链表
    循环链表里插入结点
    遍历循环链表
    
    双向链表结构定义
         struct  stu_data
         {
             char name[256];//学生名字
             struct mytime stuTime;//签到时间
             struct  stu_data* front;  //指向前一个结点
             struct  stu_data* back;  //指向后一个结点
    
         }  ;
    建立双向链表
    头指针Head
    尾部指针Tail
    插入结点
     
     //建立头结点
        Head=tail=p= malloc(sizeof( struct stu_data)); //
         memset(stu,0,sizeof( struct stu_data)); //初始化内存区域
    
    //尾部插入新结点 操作
           stu= malloc(sizeof( struct stu_data)); //分配结点内存空间
           memset(stu,0,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
    0    0    0    NULL    B
    B
    0    0    0    A    C
    C
    0    0    0    B    NULL
    //
    
    A= Head      front                 back
    0    0    0    D    B
    B
    0    0    0    A    C
    C
    0    0    0    B    D
    D
    0    0    0    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[256];//学生名字
             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,0,sizeof( struct stu_data));
         strcpy(Head->name,"头结点");
        
         
         
         do
         {//插入新的结点
             stu= malloc(sizeof( struct stu_data)); //
             memset(stu,0,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")!=0);
     
         //初始指针p 使他头结点Head
         stu=Head->back;
         do 
         {
              printf("%s,到校时间:%d时%d分%d秒
    ",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秒
    ",stu->name, stu->stuTime.hour, stu->stuTime.min, stu->stuTime.sec);
    
             stu=stu->front;
         } while ( stu!=Head);
     
        getchar();
        getchar();
        
        return 0;
    }
    
     
  • 相关阅读:
    数据库设计模式
    PostGreSQL数据库的导入导出
    [webGIS开发]为什么要把空间数据发布成地图服务,不能直接访问空间数据库呢?
    PostGIS三维对象
    数据库之触发器
    飞鸽内网穿透
    Ubuntu服务器上Anaconda新建虚拟环境(激活和取消)以及安装各个依赖包
    Ubuntu服务器上Anaconda新建虚拟环境(激活和取消)以及安装各个依赖包
    你还不会用python画蛋糕???
    在线追番软件
  • 原文地址:https://www.cnblogs.com/whzym111/p/6140268.html
Copyright © 2011-2022 走看看