怎么用C语言实现向前向后差分算法

Python016

怎么用C语言实现向前向后差分算法,第1张

没有初始化low,就会报运行时错误,初始化一下low就好了

#include "stdio.h"

#define List_Size 20

struct RecordType

{

int key//简单查找

char otherkey

}

struct RecordList

{

RecordType r[List_Size+1]

int length

}list1,*p

void init_list()

{

int i //初始化数据

p=&list1

for(i=0i<List_Size+1i++)

{

p->r[i].key =i

p->r[i].otherkey =i+1

}

p->length =List_Size+1

for(i=0i<List_Size+1i++) //确认初始化数据

{

printf("list.r[%d].key=%d,list.r[%d].otherkey=%d\n",i,p->r[i].key,i,p->r[i].otherkey)

}

printf("list.length=%d\n",p->length)

}

int BinSrch(RecordList L,int k) //二分差算法

{

int low,high,mid

int i=0

low = 0 //初始化low

high=L.length-1

while(low<=high)

{

mid=(low+high)/2

if(k==L.r[mid].key)

{

i=midbreak

}

else

{

if(k <L.r[mid].key)

{

high=mid-1

}

else

low=mid+1

}

}

// if((low==high)&&(k!=L.r[mid].key))

// {

// return (0)

// }

return (i)

}

void main()

{

int result=0

p=&list1

init_list()

result=BinSrch(list1,7)

printf("the reslut=%d",result)

getchar()

}

你是用C标准I/O库函数的话,

(1)文件定位:

文件定位指读取或设置文件当前读写点,所有的通过文件指针读写数据的函数,都是从文件的当前读写点读写数据的。

常用的函数有:

#include

<stdio.h>

int

fseek(FILE

*stream,

long

offset,

int

whence)

fseek

设置当前读写点到

offset

处,

whence

可以是

SEEK_SET,SEEK_CUR,SEEK_END,这些值决定是

从文件头、当前点和文件尾计算偏移量

offset.

你可以定义一个文件指针FILE

*fp,当你打开一个文件时,文件指针指向开头,

你要指到多少个字节,只要控制偏移量就好,例如

相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR)中间的值就是偏移量。

如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)