数据结构 算法-如何用串的堆分配存储方法实现串Index( )函数

问题描述

如何用串的堆分配存储方法实现串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 &Tchar chars) {
if (T.ch) free(T.ch);
int i;char *c;
for (i=0c=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 SHString Tint pos) {
if (posS.length)
return ERROR;
int ij;
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 st;
InitString(s);
InitString(t);
StrAssign(sabcabcdabcdeabcdefabcdefg"");
StrAssign(tabcdeabcdefab"");
dispstr(s);
dispstr(t);
printf(""%dn""Index(st1));
}

时间: 2024-12-26 09:00:31

数据结构 算法-如何用串的堆分配存储方法实现串Index( )函数的相关文章

数据结构 算法-如何用java中串的操作方法找出两个字符串中所有共同的字符

问题描述 如何用java中串的操作方法找出两个字符串中所有共同的字符 通过实现对串的基本操作的算法设计,运用模式匹配算法KMP和Brute-Force,展出两个字符串中所有共同的字符,判断一个字符串是否为E-mail地址

今天给同学写5个数据结构算法的题...感觉很有价值的几个题..感兴趣的坐下。。

  1.判断一个顺序表是否对称 2用向量作存储结构,设计以算法仅用一个辅助结点,实现将线性表中的结点循环右移k位的运算 3.已知A[n]中的元素为整形.设计算法将其调整为左右两部分.左边所有元素为奇数,右边所有元素为偶数, 4,设计以算法,逆置带头结点的动态链表L, 5单链表以非递减有序排列,设计算法实现在单链表中删去值相同的多余结点, 6假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,是编写算法将A表和B表归并成一个按元素值递减有序排列的线性表C,并要求利用原表的结点空间存

指针-哪里有问题?求解答,数据结构算法的问题

问题描述 哪里有问题?求解答,数据结构算法的问题 /* 设计一个算法,将两个非递减的链表合并成一个非递增的有序链表 要求使用原来的存储空间,不开辟新的空间,表中允许有重复的数据./ / 我的思路是: 使用L1的头结点作为新表L3的头结点,然后让L1头结点的指针域置空, 从L1和L2中选择较大的结点,使用头插法插入到L3的后面, 为什么运行不了?求大神解答! */ void Combine(LinkList &L1,LinkList &L2,LinkList &L3){ struct

java虚拟机-java 垃圾回收 Mark-and-Compact 算法 去碎片如何操作堆中内存的

问题描述 java 垃圾回收 Mark-and-Compact 算法 去碎片如何操作堆中内存的 在压缩堆内存阶段,遍历堆中所有对象并将存活对象重新放入连续的内存地址的 过程中,如果某个存活对象即将放入的地址中存有另一个还没有被移动的存活的对象, java jvm如何进行操作呢? 我看的算法中没有给此方面的信息.它只说存活对象放入 连续的堆中! 大神!!!!求助!!!!!!!!!

数据结构 算法 c语言 二叉排序树

问题描述 数据结构 算法 c语言 二叉排序树 RT 注意关键字X所代表的含义 解决方案 你的图片应该没有传上来,看不见你的问题啊

《C语言点滴》一1.4 程序=数据结构+算法

1.4 程序=数据结构+算法 C语言点滴 程序员首先要有自己的想法,而写程序只是为了实现自己的想法而已. 而程序员的想法就是用数据结构+算法来描述的.如果程序是一个人,正确的数据结构就像是强壮的体格,高效的算法就像是高尚的性格,而语言,只是一件外衣而已.不同的场景,你会穿不同的外衣,而且外衣可能还有一定的流行趋势,但这些真的不重要. 纠结于语言的程序员,就像是只关注外衣是否漂亮的小姑娘.凡是能够流传千古的作品,你会发现都是不穿衣服的,如图1-10所示的罗丹的思想者:更有甚者,不仅衣服没有了,就连

线性表-数据结构 算法如何编译运行··跪求各位路过的大神帮帮忙啊

问题描述 数据结构 算法如何编译运行··跪求各位路过的大神帮帮忙啊 #include #include #define ERROR 0 #define OK 1 typedef int Status; typedef int ElemType;//顺序表测试用 const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义 const int Increasement=10; typedef struct{ ElemType *elem; int length

内存泄露-以下代码给firstP堆分配的空间是否存在内存泄漏的可能?

问题描述 以下代码给firstP堆分配的空间是否存在内存泄漏的可能? int ix; LPSTR firstP; LPSTR secondP; while(ix < 10000) { firstP = (LPSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 100); secondP = (LPSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 100); firstP = secondP; ix+

数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数。

问题描述 数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数. 算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数. 解决方案 int n = 0; while (L != NULL) { L = L->next; n++; } 解决方案二: /* counts the nodes in the list / int fuc(struct list head) { void *tmp; int i; if(!head) return -1; for(i = 1, tm