昵称怎么起 2013-11-13 13:18
浏览 1497

如何用串的堆分配存储方法实现串Index( )函数

我的代码如下:(问题:代码实现不了功能)
#include
#include
#include

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int Boolean;

typedef int ElemType;

typedef struct {
char *ch;
int length;
}HString;

Status StrAssign(HString &T,char chars) {
if (T.ch) free(T.ch);
int i;char *c;
for (i=0,c=chars; *c; ++i,++c);
if (!i) { T.ch =NULL; T.length =0;}
else {
if (!(T.ch = (char
)malloc(i* sizeof(char))))
exit (OVERFLOW);
for(int j=0;j<i;j++)
T.ch[j]=chars[j];
T.length = i;
}
return OK;
}

Status InitString(HString &S) {
S.ch = NULL;S.length = 0;
return OK;
}

int Index(HString S,HString T,int pos) {
if (posS.length)
return ERROR;
int i,j;
i=pos; j=1;
while(i<=S.length && j<=T.length) {
if(S.ch[i]==T.ch[j]) {++i; ++j;}
else {i=i-j+2;j=1;}
}
if(j>T.length) return i-T.length;
else return 0;
}

Status dispstr(HString S) {

if (S.length==0) return ERROR;
int i;

for (i=0;i<S.length;i++) printf("%c",S.ch[i]);
printf("\n");
return OK;

}

void main()
{
HString s,t;
InitString(s);
InitString(t);
StrAssign(s,"abcabcdabcdeabcdefabcdefg");
StrAssign(t,"abcdeabcdefab");
dispstr(s);
dispstr(t);
printf("%d\n",Index(s,t,1));
}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
    • ¥15 数据可视化Python