当前位置: 首页 > news >正文

邯郸网站设计价格网站右下角浮动效果如何做

邯郸网站设计价格,网站右下角浮动效果如何做,PHP 网站搜索怎么做,电商网站建设培训1. 背景说明 该实现和链表的实现极为相似#xff0c;只是将链接的内存拆分为具体的大小的块。 2. 示例代码 1). status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H#define CHECK_NULL(pointer) if (!(pointer)) { \printf(FuncN…1. 背景说明 该实现和链表的实现极为相似只是将链接的内存拆分为具体的大小的块。 2.  示例代码 1). status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H#define CHECK_NULL(pointer) if (!(pointer)) { \printf(FuncName: %-15s Line: %-5d ErrorCode: %-3d\n, __func__, __LINE__, ERR_NULL_PTR); \return NULL; \ }#define CHECK_RET(ret) if (ret ! RET_OK) { \printf(FuncName: %-15s Line: %-5d ErrorCode: %-3d\n, __func__, __LINE__, ret); \return ret; \ }#define CHECK_VALUE(value, ERR_CODE) if (value) { \printf(FuncName: %-15s Line: %-5d ErrorCode: %-3d\n, __func__, __LINE__, ERR_CODE); \return ERR_CODE; \ }#define CHECK_FALSE(value, ERR_CODE) if (!(value)) { \printf(FuncName: %-15s Line: %-5d ErrorCode: %-3d\n, __func__, __LINE__, ERR_CODE); \return FALSE; \ } /* 函数结果状态码 */ #define TRUE 1 /* 返回值为真 */ #define FALSE 0 /* 返回值为假 */ #define RET_OK 0 /* 返回值正确 */ #define INFEASIABLE 2 /* 返回值未知 */ #define ERR_MEMORY 3 /* 访问内存错 */ #define ERR_NULL_PTR 4 /* 空指针错误 */ #define ERR_MEMORY_ALLOCATE 5 /* 内存分配错 */ #define ERR_NULL_STACK 6 /* 栈元素为空 */ #define ERR_PARA 7 /* 函数参数错 */ #define ERR_OPEN_FILE 8 /* 打开文件错 */ #define ERR_NULL_QUEUE 9 /* 队列为空错 */ #define ERR_FULL_QUEUE 10 /* 队列为满错 */ #define ERR_NOT_FOUND 11 /* 表项不存在 */ typedef int Status; /* Status 是函数的类型,其值是函数结果状态代码如 RET_OK 等 */ typedef int Bollean; /* Boolean 是布尔类型,其值是 TRUE 或 FALSE */#endif // !STATUS_H 2) lString.h /* 串的块链存储实现头文件 */#ifndef LSTRING_H #define LSTRING_H#include status.h#define CHUNK_SIZE 4 #define BLANK #typedef struct Chunk {char str[CHUNK_SIZE];struct Chunk *next; } Chunk;typedef struct {Chunk *head, *tail;int curLen; /* 字符个数 */ } LString;/* 初始化(产生空串)字符串 T */ Status InitString(LString *T);/* 生成一个其值等于 chars 的串 T (要求 chars 中不包含填补空余的字符)成功返回 OK否则返回 ERROR */ Status StrAssign(const char *chars, LString *T);/* 初始条件: 串 S 存在操作结果: 由串 S 复制得串 T(连填补空余的字符一块拷贝) */ Status StrCopy(const LString *S, LString *T);/* 初始条件:串 S 存在操作结果:若 S 为空串,则返回 TRUE,否则返回 FALSE */ Bollean StrEmpty(const LString *S);/* 若 S T,则返回值 0;若 S T,则返回值 0;若 S T, 则返回值 0 */ int StrCompare(const LString *S, const LString *T);/* 返回 S 的元素个数,称为串的长度 */ int StrLength(const LString *S);/* 初始条件: 串 S 存在操作结果: 将 S 清为空串 */ Status ClearString(LString *S);/* 用 T 返回由 S1 和 S2 联接而成的新串 */ Status Concat(const LString *S1, const LString *S2, LString *T);/* 用 Sub 返回串 S 的第 pos 个字符起长度为 len 的子串其中, 1≤ pos ≤ StrLength(S) 且 0 ≤ len ≤ StrLength(S) - pos 1 */ Status SubString(const LString *S, int pos, int len, LString *Sub);/* T 为非空串。若主串 S 中第 pos 个字符之后存在与 T 相等的子串则返回第一个这样的子串在 S 中的位置,否则返回 0 */ int Index(const LString *S, const LString *T, int pos);/* 压缩串(清除块中不必要的填补空余的字符) */ Status Zip(LString *S);/* 1 ≤ pos ≤ StrLength(S) 1。在串 S 的第 pos 个字符之前插入串 T */ Status StrInsert(const LString *T, int pos, LString *S);/* 从串 S 中删除第 pos 个字符起长度为 len 的子串 */ Status StrDelete(int pos, int len, LString *S);/* 初始条件: 串 S, T 和 V 存在,T 是非空串此函数与串的存储结构无关操作结果: 用 V 替换主串 S 中出现的所有与 T 相等的不重叠的子串 */ Status Replace(const LString *T, const LString *V, LString *S);/* 输出字符串 T */ void StrPrint(const LString *T);#endif // !LSTRING_H 3) lString.c /* 串的块链存储实现源文件 */#include lString.h #include stdlib.h #include stdio.h #include string.h/* 初始化(产生空串)字符串 T */ Status InitString(LString *T) {CHECK_VALUE(!T, ERR_NULL_PTR);T-curLen 0;T-head NULL;T-tail NULL;return RET_OK; }/* 生成一个其值等于 chars 的串 T (要求 chars 中不包含填补空余的字符)成功返回 OK否则返回 ERROR */ Status StrAssign(const char *chars, LString *T) {CHECK_VALUE(!chars || !T, ERR_NULL_PTR);int length (int)strlen(chars);CHECK_VALUE((length 0) || strchr(chars, BLANK), ERR_PARA);T-curLen length;int nodes length / CHUNK_SIZE;if (length % CHUNK_SIZE) {nodes 1;}Chunk *tail NULL, *newNode NULL;for (int i 0; i nodes; i) {newNode (Chunk *)malloc(sizeof(Chunk));CHECK_VALUE(!newNode, ERR_NULL_PTR);if (i 0) {T-head tail newNode;} else {tail-next newNode;tail newNode;}int j;for (j 0; (j CHUNK_SIZE) (*chars); j) {*(tail-str j) *chars;}if (!(*chars)) {T-tail tail;tail-next NULL;while (j CHUNK_SIZE) {*(tail-str j) BLANK;}}}return RET_OK; }/* 初始条件: 串 S 存在操作结果: 由串 S 复制得串 T(连填补空余的字符一块拷贝) */ Status StrCopy(const LString *S, LString *T) {CHECK_VALUE(!S || !T, ERR_NULL_PTR);Chunk *sHead S-head, *newNode NULL;T-head NULL;while (sHead) {newNode (Chunk *)malloc(sizeof(Chunk));CHECK_VALUE(!newNode, ERR_MEMORY_ALLOCATE);newNode-next NULL;(void)memcpy_s(newNode, sizeof(Chunk), sHead, sizeof(Chunk));if (T-head NULL) {T-head T-tail newNode;} else {T-tail-next newNode;T-tail newNode;}sHead sHead-next;}T-curLen S-curLen;return RET_OK; }/* 初始条件:串 S 存在操作结果:若 S 为空串,则返回 TRUE,否则返回 FALSE */ Bollean StrEmpty(const LString *S) {CHECK_VALUE(!S, ERR_NULL_PTR);return (S-curLen 0) ? TRUE : FALSE; }static void GetNextCharPos(Chunk **node, int *order) {(*order);if (*order CHUNK_SIZE) {*node (*node)-next;*order 0;} }static void GetNextLegalCharPos(Chunk **node, int *order) {while (*((*node)-str *order) BLANK) {GetNextCharPos(node, order);} }/* 若 S T,则返回值 0;若 S T,则返回值 0;若 S T, 则返回值 0 */ int StrCompare(const LString *S, const LString *T) {CHECK_VALUE(!S || !T, ERR_NULL_PTR);Chunk *ps S-head, *pt T-head;for (int i 0, js 0, jt 0; (i S-curLen) (i T-curLen); i) {GetNextLegalCharPos(ps, js);GetNextLegalCharPos(pt, jt);if (*(ps-str js) ! *(pt-str jt)) {return *(ps-str js) - *(pt-str jt);}GetNextCharPos(ps, js);GetNextCharPos(pt, jt);}return S-curLen - T-curLen; }/* 返回 S 的元素个数,称为串的长度 */ int StrLength(const LString *S) {CHECK_VALUE(!S, ERR_NULL_PTR);return S-curLen; }/* 初始条件: 串 S 存在操作结果: 将 S 清为空串 */ Status ClearString(LString *S) {CHECK_VALUE(!S, ERR_NULL_PTR);Chunk *p S-head, *q NULL;while (p) {q p-next;free(p);p q;}S-head S-tail NULL;S-curLen 0;return RET_OK; }/* 用 T 返回由 S1 和 S2 联接而成的新串 */ Status Concat(const LString *S1, const LString *S2, LString *T) {CHECK_VALUE(!S1 || !S2 || !T, ERR_NULL_PTR);LString str1, str2;InitString(str1);InitString(str2);StrCopy(S1, str1);StrCopy(S2, str2);T-head str1.head;str1.tail-next str2.head;T-tail str2.tail;T-curLen str1.curLen str2.curLen;return RET_OK; }/* 用 Sub 返回串 S 的第 pos 个字符起长度为 len 的子串其中, 1≤ pos ≤ StrLength(S) 且 0 ≤ len ≤ StrLength(S) - pos 1 */ Status SubString(const LString *S, int pos, int len, LString *Sub) {CHECK_VALUE(!S || !Sub, ERR_NULL_PTR);CHECK_VALUE((pos 1) || (pos S-curLen) || (len 0) || (len (S-curLen - pos 1)), ERR_PARA);int subLength len / CHUNK_SIZE;if (len % CHUNK_SIZE) {subLength 1;}Chunk *newNode (Chunk *)malloc(sizeof(Chunk));Sub-head newNode;Chunk *tail Sub-head;for (int i 0; i subLength - 1; i) {newNode (Chunk *)malloc(sizeof(Chunk));tail-next newNode;tail newNode;}tail-next NULL;Sub-tail tail;Sub-curLen len;int lastPos len % CHUNK_SIZE;if (lastPos) {for (int i lastPos; i CHUNK_SIZE; i) {*(newNode-str i) BLANK;}}Chunk *subHead Sub-head, *sHead S-head;int subPos 0, count 0;Bollean isEnd FALSE;while (!isEnd) {for (int i 0; i CHUNK_SIZE; i) {if (*(sHead-str i) BLANK) {continue;}count;if ((count pos) (count pos len - 1)) {if (subPos CHUNK_SIZE) {subHead subHead-next;subPos 0;}*(subHead-str subPos) *(sHead-str i);subPos;if (count pos len - 1) {isEnd TRUE;break;}}}sHead sHead-next;}return RET_OK; }/* T 为非空串。若主串 S 中第 pos 个字符之后存在与 T 相等的子串则返回第一个这样的子串在 S 中的位置,否则返回 0 */ int Index(const LString *S, const LString *T, int pos) {CHECK_VALUE(!S || !T, ERR_NULL_PTR);int maxRange StrLength(S) - StrLength(T) 1;CHECK_VALUE((pos 1) || (pos maxRange), 0);LString sub;InitString(sub);while (pos maxRange) {SubString(S, pos, StrLength(T), sub);if (StrCompare(T, sub) 0) {return pos;}pos;}return 0; }/* 压缩串(清除块中不必要的填补空余的字符) */ Status Zip(LString *S) {CHECK_VALUE(!S, ERR_NULL_PTR);char *newStr (char *)malloc(sizeof(char) * (unsigned int)(S-curLen 1));CHECK_VALUE(!newStr, ERR_NULL_PTR);Chunk *sHead S-head;int count 0;while (sHead) {for (int i 0; i CHUNK_SIZE; i) {if (*(sHead-str i) ! BLANK) {*(newStr count) *(sHead-str i);count;}}sHead sHead-next;}*(newStr count) \0;ClearString(S);StrAssign(newStr, S);return RET_OK; }/* 1 ≤ pos ≤ StrLength(S) 1。在串 S 的第 pos 个字符之前插入串 T */ Status StrInsert(const LString *T, int pos, LString *S) {CHECK_VALUE(!T || !S, ERR_MEMORY_ALLOCATE);CHECK_VALUE((pos 1) || (pos StrLength(S) 1), ERR_PARA);LString t;StrCopy(T, t);Zip(S);int moveBlock (pos - 1) / CHUNK_SIZE;int insertPos (pos - 1) % CHUNK_SIZE;Chunk *sHead S-head;if (pos 1) {t.tail-next S-head;S-head t.head;} else if (insertPos 0) {for (int i 0; i moveBlock - 1; i) {sHead sHead-next;}Chunk *insertNext sHead-next;sHead-next t.head;t.tail-next insertNext;if (insertNext NULL) {S-tail t.tail;}} else {for (int i 0; i moveBlock; i) {sHead sHead-next;}Chunk *newBlock (Chunk *)malloc(sizeof(Chunk));CHECK_VALUE(!newBlock, ERR_NULL_PTR);for (int i 0; i insertPos; i) {*(newBlock-str i) BLANK;}for (int i insertPos; i CHUNK_SIZE; i) {*(newBlock-str i) *(sHead-str i);*(sHead-str i) BLANK;}newBlock-next sHead-next;sHead-next t.head;t.tail-next newBlock;}S-curLen t.curLen;Zip(S);return RET_OK; }/* 从串 S 中删除第 pos 个字符起长度为 len 的子串 */ Status StrDelete(int pos, int len, LString *S) {CHECK_VALUE(!S, ERR_NULL_PTR);CHECK_VALUE((pos 1) || (pos S-curLen - len 1) || (len 0), ERR_PARA);int count 0;int currOrder 0;Chunk *sHead S-head;while (count pos - 1) {GetNextLegalCharPos(sHead, currOrder);count;GetNextCharPos(sHead, currOrder);}count;if (*(sHead-str currOrder) BLANK) {GetNextLegalCharPos(sHead, currOrder);}while (count pos len) {GetNextLegalCharPos(sHead, currOrder);*(sHead-str currOrder) BLANK;count;GetNextCharPos(sHead, currOrder);}S-curLen - len;return RET_OK; }/* 初始条件: 串 S, T 和 V 存在,T 是非空串此函数与串的存储结构无关操作结果: 用 V 替换主串 S 中出现的所有与 T 相等的不重叠的子串 */ Status Replace(const LString *T, const LString *V, LString *S) {CHECK_VALUE(!T || !V || !S, ERR_NULL_PTR);CHECK_VALUE(StrEmpty(T), ERR_PARA);int pos 1;do {pos Index(S, T, pos);if (pos) {StrDelete(pos, StrLength(T), S);StrInsert(V, pos, S);pos StrLength(V);}} while (pos);return RET_OK; }/* 输出字符串 T */ void StrPrint(const LString *T) {int count 0;Chunk *tHead T-head;while (count T-curLen) {for (int i 0; i CHUNK_SIZE; i) {if (*(tHead-str i) ! BLANK) {printf(%c, *(tHead-str i));count;}}tHead tHead-next;} } 4) main.c /* 入口程序源文件 */#include lString.h #include stdio.hvoid ShowStr(const LString *S, const char *stringName);int main(void) {LString t1, t2, t3, t4;InitString(t1);InitString(t2);InitString(t3);InitString(t4);printf(After initialize the string t1, the string t1 is %s,the length of string t1 is %d\n, (StrEmpty(t1) TRUE) ? empty : not empty,StrLength(t1));char *s1 ABCDEFGHI, *s2 12345, *s3 , *s4 asd#tr, *s5 ABCD;Status ret StrAssign(s3, t1);if (ret RET_OK) {ShowStr(t1, t1);}ret StrAssign(s4, t1);if (ret RET_OK) {ShowStr(t1, t1);}ret StrAssign(s1, t1);if (ret RET_OK) {ShowStr(t1, t1);}printf(After assign s1 to the string t1, the string t1 is %s,the length of string t1 is %d\n, (StrEmpty(t1) TRUE) ? empty : not empty,StrLength(t1));ret StrAssign(s2, t2);if (ret RET_OK) {ShowStr(t2, t2);}StrCopy(t1, t3);ShowStr(t3, t3);ret StrAssign(s5, t4);if (ret RET_OK) {ShowStr(t4, t4);}Replace(t4, t2, t3);ShowStr(t3, t3);ClearString(t1);printf(After clear string t1, the string t1 is %s,the length of string t1 is %d\n, (StrEmpty(t1) TRUE) ? empty : not empty,StrLength(t1));Concat(t2, t3, t1);ShowStr(t1, t1);Zip(t1);ShowStr(t1, t1);int pos Index(t1, t3, 1);printf(pos %d\n, pos);printf(To insert the string t2 before the posTh character of the string t1, enter pos: );scanf_s(%d, pos);StrInsert(t2, pos, t1);ShowStr(t1, t1);int len;printf(Please input the position and length of the subString of t1: );scanf_s(%d%d, pos, len);ClearString(t2);SubString(t1, pos, len, t2);ShowStr(t2, t2);printf(StrCompare(t1, t2) %d\n, StrCompare(t1, t2));printf(Please input the position and length of the string t1 to be delete: );scanf_s(%d%d, pos, len);StrDelete(pos, len, t1);ShowStr(t1, t1);t1.head-str[0] BLANK;t1.curLen--;printf(t1.head-str[0] %c\n, t1.head-str[0]);ShowStr(t1, t1);Zip(t1);printf(t1.head-str[0] %c\n, t1.head-str[0]);ShowStr(t1, t1);ClearString(t1);ClearString(t2);ClearString(t3);ClearString(t4);return 0; }void ShowStr(const LString *S, const char *stringName) {printf(The string %s is: , stringName);StrPrint(S);printf(\n); } 3. 运行示例
http://www.hkea.cn/news/14363537/

相关文章:

  • 网站弹出公告代码WordPress ngrok
  • 网站搜索出来有图片济宁哪家网站建设公司正规
  • 黑龙江省住房和建设厅网站seo课程培训班费用
  • 为什么做网站必须要用域名建设企业网站需注意什么
  • 黄江网站设计知名网站网页设计特色
  • 开发app的网站专做商业平台网站
  • 网站购物车功能怎么做网站建设相关法律
  • 做电子请帖的网站wordpress主题知更
  • 企业网站seo推广技巧手机开网店用什么软件
  • 购物网站案例谷歌浏览器下载手机版官网中文
  • 网站优化的重要性做的网站打不开
  • 惠州市seo网站设计微信网站开发rem px
  • 重庆微信网站开发公新品发布会演讲稿范文
  • 南昌市建设网站网站谁做的比较好看的
  • 娄底市网站建设广州新冠最新情况
  • 淘宝网站是用什么开发的天津网络推广公司
  • 建网站详细教程辽源网站建设设计
  • 建设网站需要注意的事项wordpress摘要图片
  • 欧美农庄网站模板长期大量手工活外发
  • 网站建设的调研报告做个网站
  • 专门做辅助的网站免费网站注册平台
  • 快手秒刷自助网站沙洋网站开发
  • 在线阅读小说网站怎么做如何安装wordpress的备份
  • 网站建设与网页设计难学吗网站支付宝支付接口申请
  • 网站策划书的内容网站开发的路径是什么
  • 博星卓越营销网站设计网站建设 服务范围
  • 自己架设网站北京装饰网站建设
  • 网站地图制作工具wordpress搬家 后台错乱
  • 前端是做网站吗长沙建设网站哪家好
  • 东莞市做网站的公司游戏私人服务器搭建