数据结构串之堆串
2016-04-19 20:08
375 查看
这是堆串,以后有时间写总结,都是自己已经敲出来的
#include<stdio.h> //char* ch表示串的起始地址,len表示串的长度 typedef struct DUI{ char* ch; int len; }HString; //堆串插入函数 //将t串插入s串中pos位置前 bool StrInsert(HString* s,int pos,HString* t) { int i; char* temp; if(pos<0||s->len==0||pos>s->len) return false; temp=(char*)malloc(s->len+t->len); if(temp==NULL) return false; for(i=0;i<pos;i++) temp[i]=s->ch[i]; for(i=0;i<t->len;i++) temp[i+pos]=t->ch[i]; for(i=pos;i<s->len;i++) temp[i+t->len]=s->ch[i];\ s->len+=t->len; free(s->ch); s->ch=temp; return true; } //在串s中删除从下标pos起len个字符 bool StrDelete(HString* s,int len,int pos) { int i; char* temp; if(pos<0||pos+len>s->len) return false; temp=(char*)malloc(s->len-len)); if(temp==NULL) return false; for(i=0;i<pos;i++) { temp[i]=s->ch[i]; } for(i=pos;i<s->len-len;i++) temp[i]=s->ch[i+len]; s->len=s->len-len; free(s->ch); s->ch=temp; return true; } //堆串赋值函数 //将字符串tval的值赋给堆串s bool StrAssign(HString* s,char* tval) { int i=0,len; if(s->ch!=NULL) free(ch); while(tval[i]!='\0') { i++; } len=i; if(len) { s->ch=(chat*)malloc(len); if(s->ch=NULL) return false; for(i=0;i<len;i++) s->ch[i]=tval[i]; } else s->ch=NULL; s->len=len; return true; }
相关文章推荐
- 数据结构之串——顺序串
- 数据结构和算法16 之堆排序
- 数据结构和算法15 之二叉树排序
- 关于在牛客网上做题的解析之数据结构(每日20道题,记录错误和不懂的题)
- 广义表(非线性结构)
- 数据结构概念解析之—空间复杂度
- 数据结构和算法14 之归并排序
- 数据结构概念解析之—时间复杂度
- 【数据结构】ArrayList原理及实现学习总结
- HashTable与多条件筛选
- 数据结构-广义表
- 数据结构,堆的学习
- 浙江大学MooC数据结构OJ——线性结构
- 冒泡排序的另一种写法
- java 常见数据结构(Array)
- 数据结构和算法设计专题之---二分查找(Java版)
- 数据结构和算法设计专题之---八大内部排序
- 算法Sedgewick第四版-第1章基础-009一链表与数组的比较及其他数据结构
- 【数据结构与算法】线段树篇二
- JAVA数据结构-LinkedList,ArrayList,Tree,