设为首页 加入收藏

TOP

C语言按照索引插入并查找元素的实现教程
2018-04-08 08:51:12 】 浏览:102
Tags:语言 按照 索引 插入 查找 元素 实现 教程

//我觉得代码基本上都有注释,我也不知道解释什么,有不懂的可以给我发留言;

#include

#define LEN 30

typedef struct

{

int index; //索引值;

int start; //开始位置;

int length; //子表长度;

}Index_Table;

//定义主表数据;

int Master[LEN]=

{

101,102,103,104,105,106,107,108, 0, 0,

111,112,113,114,115,116,117, 0, 0, 0,

211,212,213,214,215,216, 0, 0, 0, 0

};

//定义索引表;

Index_Table Table[3]=

{

{10, 0, 8},

{11,10, 7},

{21,20, 6}

};

//按索引查找;

int IndexSearch(int key)

{

int start,length;

for(int i=0;i<3;i++) //在索引表中查找索引值;

{

if(Table[i].index==key/10) //找到索引值并计算索引值;;

{

start=Table[i].start; //获取数组开始序号;

length=Table[i].length; //获取元素的长度;

break; //跳出循环;

}

}

if(i>=3)

return -1; //索引表中查找失败;

for(i=start;i if(Master[i]==key) //找到关键字;

return i; //返回序号;

}

//插入一个新的关键字;

int InsertNode(int key)

{

int start,length;

for(int i=0;i<3;i++) //在索引表中查找索引值;

{

if(Table[i].index==key/10) //计算索引值;

{

start=Table[i].start; //获取数组开始的序号;

length=Table[i].length; //获取元素长度;

break;

}

}

if(i>=3)

return -1; //索引表中查找失败;

Master[start+length]=key; //保存关键字到主表;

Table[i].length++; //修改索引表的子表长度;

return 0;

}

int main(void)

{

long key;

int i,pos;

printf("原数据:");

for(i=0;i {

if(!(i%10))

printf("\n");

printf("%d ",Master[i]);

}

printf("\n\n");

printf("输入要查找的关键字:");

scanf("%d",&key);

pos=IndexSearch(key);

if(pos>-1)

printf("查找成功,该关键字的索引位置(即下标)为: %d",pos);

else

printf("查找失败!!!");

printf("\n\n");

printf("输入要插入的关键字: ");

scanf("%d",&key);

printf("\n");

if(InsertNode(key)==-1)

printf("插入失败!!!");

else

{

printf("插入关键字后的数据为:");

for(i=0;i {

if(!(i%10))

printf("\n");

printf("%d ",Master[i]);

}

printf("\n");

}

printf("\n");

return 0;

}

//输出截图;

\

编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言编程练习题及答案分享 下一篇C语言重定位代码分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }