双向链表结构定义 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;//可有可无的 A= Head front back 0 0 0 D B B 0 exit e A C C 0 0 0 B D D=stu=p=tail 0 exit 0 C A
代码
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; // struct stu_data stu[50]; time_t t;// long int struct tm * timfo; int i; stu=malloc(sizeof( struct stu_data)); //256+12=268 printf("%d ", sizeof( struct stu_data)); getchar(); //for (i=0;i<3;i++) //{ // scanf("%s",&stu[i].name); // time(&t); // timfo= localtime(&t); //取当前系统时间 // stu[i].stuTime.hour=timfo->tm_hour;//时 // stu[i].stuTime.min=timfo->tm_min;//分 // stu[i].stuTime.sec=timfo->tm_sec;//秒 //} ////显示学生 到校时间 //for (i=0;i<3;i++) //{ // // time(&t); // timfo= localtime(&t); //取当前系统时间 // printf("%s,到校时间:%d时%d分%d秒 ",stu[i].name, stu[i].stuTime.hour, stu[i].stuTime.min, stu[i].stuTime.sec); //} getchar(); getchar(); return 0; }