typedef struct _tagStudentInfo
{
int ID;
char * name;
int tel;
}StudentInfo,*stu;
typedef struct linknode
{
int number;
struct linknode *pNext;
}linknode,*nodetype;
#include <stdio.h>
#include <stdlib.h>
#include "test.h"
//////////////////////////////////////////////////////////////////////////////////////
/*
目前测试,结点的结构体只放了个number
*/
//////////////////////////////////////////////////////////////////////////////////////
/*插入排序主例程*/
nodetype OrderList(nodetype pHead)
{
nodetype guard,pChoosedNode,pPreChoosedNode; /*pChoosedNode用来指向需要插入的结点,pPreChoosedNode用来指向pChoosedNode的前一个结点*/
//for(pPreChoosedNode=pHead,pChoosedNode=pHead->pNext;pChoosedNode!=NULL;)
pPreChoosedNode=pHead,pChoosedNode=pHead->pNext;
while(NULL!=pChoosedNode)
{
guard=pHead; /*guard用来遍历寻找合适的插入位置*/
//for(;guard!=pChoosedNode;guard=guard->pNext)
while(guard!=pChoosedNode)
{
if(guard->pNext->number > pChoosedNode->number)/*如果找到,即把pChoosedNode所指向的结点插到guard后面,然后跳出循环*/
{
pPreChoosedNode->pNext=pChoosedNode->pNext;
pChoosedNode->pNext=guard->pNext;
guard->pNext=pChoosedNode;
pChoosedNode=pPreChoosedNode->pNext;
break; /*别忘了此处的break*/
}
guard=guard->pNext;
}
if(guard==pChoosedNode)/*此处需要注意,只在pChoosedNode所指结点不需要前插时,移动pChoosedNode和pPreChoosedNode*/
{
pChoosedNode=pChoosedNode->pNext;
pPreChoosedNode=pPreChoosedNode->pNext;
}
}
return pHead;
}
// OK 创建单链表
nodetype CreateList()
{
//声明指针变量pHead,用于保存头结点指针
nodetype pHead;
//分配头结点内存,并将返回指针赋给pHead
pHead = malloc(sizeof *pHead);
//将pHead->data.id置为-1
//将pHead的next置为NULL
pHead->pNext = NULL;
return pHead;
}
// OK 输出整个单链表的内容,pHead为头结点指针
void Printlist(nodetype pHead)
{
//声明一个指针变量Node,用于保存链表的当前结点
nodetype pNode;
//将pNode赋值为输入参数pHead->pNext
pNode = pHead->pNext;
//循环读取pNode->data字段的值,知道pNode为空指针
while(pNode)
{
printf("The number is %d\n",pNode->number);
//将pNode赋值为pNode->pNext
pNode = pNode->pNext;
}
}
// OK 计算单链表的长度,pHead为头结点指针
int GetListLen(nodetype pHead)
{
//声明一个整形变量i,用于保存链表长度
int i = 0;
//声明一个指针变量pNode,用于保存链表的当前结点
nodetype pNode = NULL;
//将pNode赋值为输入参数pHead
pNode = pHead;
//循环读取pNode,直到pNode为空指针
while(pNode)
{
i = i + 1;
pNode = pNode->pNext;
}
return i;
}
// OK 查找学生ID为stuID的结点,pHead为头结点指针,stuID为学生ID
nodetype FindNodeByStuID(nodetype pHead,int stuID)
{
//声明一个指针变量pNode,用于保存链表的当前结点
nodetype pNode = pHead;
//循环读取pNode->data中,iID字段的值,直到pNode为空指针
while(pNode)
{
//如果pNode->data.ID等于 i
if(pNode->number==stuID)
{
//则推出循环;
break;
}
//将pNode赋值为pNode->pNext;
pNode = pNode->pNext;
}
//返回pNode
return pNode;
}
//在制定的学生ID结点后插入一个结点,pHead为头结点指针,iStuID为学生ID,pStudentInfo为结点值指针
// OK nodetype InsertNode(nodetype pHead,int iStudID,StudentInfo * pStudentInfo)
nodetype InsertNode(nodetype pHead,int iStudID)
{
//声明两个指针变量pNode,pNewNode,分别用于保存当前结点和新分配的结点指针
nodetype pNode = NULL;
nodetype pNewNode = malloc(sizeof *pNewNode);
pNewNode->pNext = malloc(sizeof *(pNewNode->pNext));
//找到值为iStudID的结点指针,并保存到pNode
pNode = FindNodeByStuID(pHead,iStudID);
//将pNode->pNext赋值为pNewNode,感觉有问题
//pNewNode = pNode->pNext;
pNewNode->pNext = pNode->pNext;
pNode->pNext = pNewNode;
pNewNode->number = 2010;
//将pNewNode->pNext赋值为空,感觉有问题
// pNewNode->pNext = NULL;
//将pStudentInfo赋值给pNewNode的data域
//返回pHead
return pHead;
}
//在量表尾部插入一个结点,pHead为头结点指针,pStudentInfo为节点值指针
/*单链表插入排序的测试例程*/
int main(void)
{
/*构造一个包含头节点的单链表*/
nodetype head = malloc(sizeof *head);
nodetype p = head;
nodetype test = NULL;
int i=0;
//int result = 0;
while(i<6)
{
p->pNext = malloc(sizeof *head);
p = p->pNext;
p->number = rand()%100;
printf("%d",p->number);
p->pNext = NULL;
i++;
}
printf("\n");
//Printlist(head);
//CreateList();
//result = GetListLen(head);
//printf("result ========= %d\n",result);
//test = FindNodeByStuID(head,34);
test = InsertNode(head,34);
/*插入排序*/
// OrderList(head);
/*输出排序后的链表*/
p=head->pNext;
while(p!=NULL)
{
printf("%d ",p->number);
p=p->pNext;
}
/*释放内存*/
while(head)
{
p=head;
head=head->pNext;
free(p);
}
return 0;
}
分享到:
相关推荐
记一次调试YOLOv5+DeepSort车辆跟踪项目的经过.doc
目标跟踪+YOLOv8-deepsort 实现智能车辆跟踪+计数系统源码(高分项目).zip 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,都经过严格调试,确保可以运行!放心下载使用。 目标跟踪+YOLOv8-deepsort ...
基于YOLOv5+DeepSort的车辆跟踪完整代码,关于代码运行介绍和调试运行的效果可见本人博客https://wuxian.blog.csdn.net/article/details/124602633,内附环境配置教程,敬请参考
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用!...deepsort结合yolov5测试现实中小车经过的时间和速度,判断是不是存在超速行为,并将结果通过rabbitmq输出(python源码+项目说明).zip
该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,...
基于YOLOv5+DeepSort算法的口罩佩戴识别与追踪系统源码(毕业设计).zip 该项目是个人毕业设计项目源码,评审分达到95分以上,都经过严格调试,确保可以运行! 基于YOLOv5+DeepSort算法的口罩佩戴识别与追踪系统...
毕业设计-基于yolov5+deepsort实现高速移动车流人流量统计项目实战源码.zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、...
基于YOLOv8和deepsort实现智能车辆跟踪检测计数系统源码(优质项目).zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、...
目标跟踪算法-使用yolov8+deepsort开发的多目标跟踪算法项目源码.zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、期末大...
目标跟踪+YOLOv8-deepsort 实现智能车辆跟踪+计数系统源码(优质项目).zip个人经导师指导并认可通过的高分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、...
基于YOLOv5+Deepsort实现车辆行人追踪和计数源码+说明文档(毕业设计).zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、...
1、该资源内项目代码经过严格调试,下载即用确保可以运行!...deepsort结合yolov5测试现实中小车经过的时间和速度,判断是不是存在超速行为,并将结果通过rabbitmq输出(python源码+项目说明).zip
基于深度学习的驾驶员分心驾驶行为(疲劳+危险行为)预警系统使用YOLOv5+Deepsort实现驾驶员的危险驾驶行为预测.zip个人经导师指导并认可通过的高分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要...
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做...基于深度学习yolov5+lpr3+deepsort的交通识别检测系统源码+项目说明.zip
ASP.NET的两种模式: SortByTime 按处理顺序 SortByCategory 按警告级别
3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于yolov5和deepsort进行目标检测和跟踪,并增加轨迹线的显示(python源码+项目说明)(改进轨迹线颜色与目标框匹配、...
int sort[M]; int visit[M]; //visit[i]表示第i个垃圾集中点的访问情况 int final=0; int L[M][M]; //表示第i个垃圾集中点到第j个垃圾集中点的距离 int m,vmin,u; double weight; typedef struct node{ double laji...
鉴于初学C语言或C++时对快速排序算法的了解不够深入,在此上传快速排序的C语言实现代码,该实现代码具有模块化特点,并且在代码中写了注释,并在调试过程中易出错的关键地方做了标注;此外,在代码实现中添加了良好...