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;
    }
    
     
  • 相关阅读:
    PDF数据提取------2.相关类介绍
    Google搜索的常用技巧
    a helper class for generating xls or csv file
    正则 提取html标签value
    获取 windows地址栏 网页地址栏 文件名
    MSSQL将逗号分隔的字符串转换成列显示
    C# String.Format字符串中包含"{" "}"时需注意的问题
    格式化JSON中时间
    Oracle 10G创建表空间
    Sqlserver取最近一分组中最新一条记录
  • 原文地址:https://www.cnblogs.com/whzym111/p/6140268.html
Copyright © 2011-2022 走看看