《数据结构实验与实训教程(第4版)》程序代码 下载本文

int display( int y, char *str ) // 在屏幕指定行显示一行数据 { clreol(); // 清除一行 gotoxy( 1, y ); // 光标移动到行首 printf( str ); fflush( stdout ); return 0;

}

int append() // 在当前光标下加入一空行

{ int i; int nr;

// 编辑记录在缓冲区中行号

nr = edit.shiney - 1 + edit.scry; if( edit.allrec >= MAXROW ) {// 编辑行数越界

display( 25, \Too many lines\ return -1; }

for( i = edit.allrec; i > nr + 1; i-- )

// 数据后移一行

memcpy( edit.info[i], edit.info[i-1], MAXCOL + 1 );

memset( edit.info[nr+1], 0, MAXCOL + 1 ); // 在光标后插入一空行 edit.allrec++;

if( edit.shiney >= 24 ) { // 光标所在位置为屏幕最后一行 edit.shiney = 24; edit.scry++; // 屏幕下移一行 } else edit.shiney++; // 光标下移一行 refresh_scr();

// 刷新屏幕

return 0;

}

int search( char *str ) // 查找文件中匹配字段,返回0: 查找成功 { int i, j, len, cmplen; len = strlen( str ); if( len == 0 ) // 无查找内容 return -1; j = edit.shinex;

for( i = edit.scry + edit.shiney - 1; i < edit.allrec; i++ ) {

88

cmplen = strlen( edit.info[i] ) - len; for( ; j <= cmplen; j++ ) if( strncmp( edit.info[i] + j, str, len ) == 0 ) break; if( j <= cmplen ) // 查到匹配字段 break;

j = 0; }

if( i == edit.allrec )

// 搜索到文件尾,表示查找失败

return -1;

if( i >= edit.scry && i < edit.scry + 24 ) { // 匹配的内容在当前屏幕内 edit.shinex = j + 1; edit.shiney = i + 1 - edit.scry; gotoxy( edit.shinex, edit.shiney ); } else { // 匹配的内容不在当前屏幕 edit.shinex = j + 1; edit.shiney = 1; edit.scry = i; refresh_scr(); }

return 0;

}

89

实验4 旅游路线安排模拟系统

[参考程序]: #include #define n 5

#define max 1000 typedef int array[n][n]; array a,b,c,d; int path[n],s[n]; int p(array b, int *m) {

int pi,pj,pk; *m=0;

For(pi=0;pi

pk=max;

for(pj=0;pj

if((pk>0)&&(pk!=max)) {

*m=*m+pk;

For(pj=0;pj

b[pi][pj]=b[pi][pj]-pk; } }

for(pj=0;pj

pk=max;

for(pi=0;pi

if((pk>0)&&(pk!=max)) {

*m=*m+pk;

for(pi=0;pi

90

b[pi][pj]=b[pi][pj]-pk; } } return; }

main() {

int i,j,k,min,m1,m,jj,kk,si,sj;

printf(“\\n input travelling expenses table:”); printf(“\\n”); for(i=0;i

scanf(“%d”,&a[i][j]); for(i=0;i

path[0]=0; i=0;

s[0]=max;

for(j=1;j

m1=max;

for(j=0;j

if((s[j]==0)&&(b[i][j]!=max)) {

for(si=0;si

c[i][kk]=max; c[kk][j]=max; }

p(&c,&m); if(m+b[i][j]

91