# include<stdio.h>
typedef int keytype;
typedef struct chain
{
keytype Key;
struct chain *Next;
} chaintype;
chaintype *HashSeach(chaintype *a[], keytype Key, int( *Hash)(), int Mod);
int HashInsert(chaintype *a[], keytype Key, int(* Hash)(),int Mod);
int Hash1(keytype Key, int Mod);
main()
{
int i,Key, Mod=10;
int Test[10]={1,2,3,4,5,6,66,666,7,11,};
chaintype *a[10],*p;
int (*Hash)();
for(i=0;i<10;i++) a[i]=NULL;
Hash=Hash1;
for(i=0;i<10;i++)
{
HashInsert(a,Test[i],Hash,Mod);
}
Key=666;
p=HashSeach(a,Key,Hash,Mod);
if(p!=NULL)printf("\n查找成功!");
else printf("\查找失败!");
}
chaintype *HashSeach(chaintype *a[],keytype Key,int (*Hash)(),int Mod)
{
chaintype *p;
int i;
i=(*Hash)(Key,Mod);
p=a[i];
while(p!=NULL&&p->Key!=Key) p=p->Next;
if(p==NULL)return NULL;
else return p;
}
int HashInsert(chaintype *a[],keytype Key,int (*Hash)(),int Mod)
{
chaintype *pre,*cur;
int i;
i=(*Hash)(Key,Mod);
pre=a[i];
cur=cura[i];
while(cur!=NULL&&cur->Key!=Key)
{ pre=cur;
cur->Next;
}
if(cur==NULL)
{
cur=(chaintype * )malloc(sizeof(chaintype));
cur->Key=Key;
cur->Next=NULL;
if(a[i]==NULL) a[i]=cur;
else pre->Next=cur;
return 1;
}
return 0;
}
int Hash1(keytype key, int Mod)
{
return key % Mod;
}
数据结构使用c语言算法实现
需积分: 0 189 浏览量
更新于2008-10-31
收藏 92KB RAR 举报
在IT领域,数据结构是计算机科学中的核心概念,它涉及到如何高效地组织和管理数据,以便于快速访问和操作。C语言是一种强大的编程语言,它提供了底层的内存管理和控制,因此是实现数据结构的理想选择。本资料包"数据结构使用C语言算法实现"聚焦于通过C语言来编写数据结构的算法,帮助学习者加深对两者关系的理解。
1. **数组**:C语言中最基础的数据结构,可以理解为存储同类型元素的连续内存空间。通过数组下标进行访问,时间复杂度为O(1)。学习者可以在此基础上理解一维、二维甚至多维数组的创建和操作。
2. **链表**:不同于数组,链表的元素在内存中不一定是连续的。每个元素(节点)包含数据和指向下一个节点的指针。链表分为单链表、双链表和循环链表等类型,插入和删除操作通常比数组更灵活。
3. **栈**:后进先出(LIFO)的数据结构,常用于表达式求值、函数调用等场景。C语言中,可以通过数组或动态分配内存来实现栈。
4. **队列**:先进先出(FIFO)的数据结构,适用于任务调度、缓冲区管理等。队列可以用数组或链表实现。
5. **树**:非线性数据结构,包括二叉树、平衡树(如AVL树和红黑树)等。二叉树有查找、插入和删除等操作,平衡树则保持了元素的排序特性,查找效率高。
6. **图**:由顶点和边构成,表示对象间的关系。有邻接矩阵和邻接表两种存储方式,可用于路径搜索、最短路径等问题。
7. **哈希表**:通过哈希函数将键映射到数组索引,实现快速查找。冲突处理是哈希表的关键,常见的方法有开放寻址法和链地址法。
8. **排序算法**:如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,它们是数据处理的基础,了解其原理和性能分析对于优化代码至关重要。
9. **查找算法**:包括顺序查找、二分查找、哈希查找等,它们决定了在数据集中定位特定元素的效率。
10. **动态规划**:一种解决复杂问题的策略,通过将大问题分解为子问题来求解。在数据结构实现中,动态规划常用于优化算法性能。
学习这个资料包,你将能够理解和实现这些基本数据结构,并运用C语言编写相关的算法。通过实践,你不仅可以掌握理论知识,还能提升编程技能,为解决实际问题打下坚实基础。记得多上机实践,因为编程的学习离不开不断的动手练习。
happyare
- 粉丝: 0
- 资源: 4
最新资源
- 基于ssm的健身房管理系统源码(java毕业设计完整源码).zip
- 用于平抑可再生能源功率波动的储能电站建模及评价 关键词:储能电站 功率波动 并网 平抑可再生能源 参考文档:《用于平抑可再生能源功率波动的储能电站建模及评价》仅参考 《光伏发电容量可信度评估》参考风电
- 不同颜色球体检测1-YOLO(v7至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 基于Python控制台电商用户行为分析.py
- 基于ssm的教师业务数据统计与分析系统源码(java毕业设计完整源码).zip
- S7-1200 S7-1500 SCL 小实例-位变量计数编程.mp4
- 基于ssm的酒店客房预定管理系统源码(java毕业设计完整源码+LW).zip
- 北京建筑大学2024给水管道系统设计平面图
- 灾情信息一体化编码及管理系统-MultiSource-HazardData v2.0 实现灾情数据高效利用
- 西门子1200PLC 自动贴标机 三轴伺服控制 包括PLC程序和触摸屏程序 1触摸屏是西门子TP900 23轴伺服PTO,脉冲加方向控制 3梯形图和SCL编写 红圆多种执行器:机械手
- 基于ssm的客户关系管理系统源码(java毕业设计完整源码).zip
- 基于ssm的课堂教学效果实时评价系统源码(java毕业设计完整源码+LW).zip
- rrt格式文件资源测试
- 主机厂基于Simulink MBD新能源电动汽车主驱电驱控制器算法模型及开发资料,量产模型,量产软件,量产代码,软件架构设计,输入输出定子,单元测试,MIL测试资料 (全套资料) Sumlink M
- 网页版的贪吃蛇下游戏(html+js)
- 基于ssm的篮球系列网上商城设计与实现源码(java毕业设计完整源码+LW).zip