Q大到内存装不下Q?/strong>Q?br />
链表中的struct l构?:
>> 排序属性文件归?br />
>> 排序属性整条数据在文g中的 起始位置 - l束位置
>> 在排序中的排?Q?链表l构,只记入比自己的 属性在此链表的位置 Q?br />
比如 :
1. 文g1内容 =>
说明:
完整数据描述 : 此数据在文g中的 起始位置Q当然是通过E序取得的,qؓ了方便我标出Q?/strong>
..c
. 0 - 22
..a
. 23 - 55
..b
. 56- 76
..d
. 77 - 130
..f
. 131 - 220
..e
. 221 - 243
2. 数据l构预开I间 100 byte
3. 文g存储在描q?: # 链表排序我就不介l了Q数据结构的最基本技能,修改数据l构中的比自己小的指?
我这q出结?br />
{ /tmp/文g1, 0-22 , 300 } #说明 c Q?在链表位|?0
{ /tmp/文g1, 23-55 , 200 } # a Q?100
{ /tmp/文g1, 56-76 , 0 } # b : 200
{ /tmp/文g1, 77-130 , 500 } # d : 300
{ /tmp/文g1, 131-220 , } # f : 400
{ /tmp/文g1, 221-243 , 400 } # e : 500
4. 倒叙输出 由小到到
假设预存最??nbsp; 200 链表位置
扑և 使用 open /tmp/文g1
q?seek 文g游标 定位 23-55 取出 ..a...
Ҏ 链表?200 ?seek 56 76 取出 ..b...
{等
当然 上面
数据l构你可以?双向链表Q?btree , U黑 , 斐L那契。。。( 数据l构l于感觉有用了,不枉Ҏ考的软证啊!Q?br />
通过说明Q我q?l大家提供个 可能需要的 技术细?(py),不之处 Ƣ迎拍砖Q!
1. 二进制文?l构?写,修改
#指定修改 190 byte 处的 内容
import os
from struct import *
fd = os.open( "pack1.txt", os.O_RDWR|os.O_CREAT )
ss = pack('ii11s', 3, 4, 'google')
os.lseek(fs, len(ss)*10, 0)
os.write(fs,ss)
os.fsync(fs)
#os.close( fs )
2. seek 指定位置l构化读?br />
from struct import *
file_object = open('pack1.txt', 'rb')
def ts(si,ss=len(ss)):
file_object.seek(si*ss)
chunk = file_object.read(ss)
a,b,c=unpack('ii11s', chunk )
print a,b,c
ts(10)
#输出 3 4 google
1. 其他语言?使用
struct l构定义 ,?python ?使用 struct 包,q样序列出来的数据到文g中其他语a也可以?
参? http://www.pythonid.com/bbs/archiver/?tid-285.html
pack1.py
from struct import *
# i ?intQ?Q?nbsp; 11s 为预?11 位置 ?string
# 此数据类??19 byte ss = pack('ii11s', 1, 2, 'hello world')
f = open("pack1.txt", "wb")
f.write(ss)
f.close()
上面的代码往C的结构中写入数据Q结构包括两个整型和一个字W串?br />
pack1.c
#include <stdio.h>
#include <string.h>
struct AA
{
int a;
int b;
char c[64];
};
int main()
{
struct AA aa;
FILE *fp;
int size, readsize;
memset(&aa, 0, sizeof(struct AA));
fp = fopen("pack1.txt", "rb");
if (NULL == fp) {
printf("open file error!"n");
return 0;
}
readsize = sizeof(struct AA);
printf("readsize: %d"n", readsize);
size = fread(&aa, 1, readsize, fp);
printf("read: %d"n", size);
printf("a=%d, b=%d, c=%s"n", aa.a, aa.b, aa.c);
fclose(fp);
return 0;
}
l果输出:
C:"Documents and Settings"lky"桌面"dataStructure>a
readsize: 72
read: 57
a=1, b=2, c=hello word
最后罗嗦下Q?/strong>
能用数据l构了,很多东西都可以根据自己逻辑定制 存储很方??不再?关系数据?, key 数据??mapreduce 的限?
参?
http://docs.python.org/library/struct.html#module-struct #官方struct ?说明
http://blog.csdn.net/JGood/archive/2009/06/22/4290158.aspx # 使用 struct 的前辈留下的
http://www.tutorialspoint.com/python/os_lseek.htm #一个小demo
Python天天味(17) - opend文g

]]>