数据结构——c语言描述 第四章 字符串

来源:互联网 发布:北京it系统集成商 编辑:程序博客网 时间:2024/05/16 11:16

今天心情不好,状态十分差,昨晚没睡好,进早上还早起,就写一点吧,这章是很简单的。上个代码。

#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXSIZE 20#define FALSE 0#define TRUE 1typedef struct String {    char string[MAXSIZE];    int length;}SString;int InitStr (SString **S , char *c) {    char *ptr = c;    *S = (SString *) malloc (sizeof (SString));    (*S)->length = 0;    while (*ptr != '\0') {        (*S)->string[(*S)->length] = *ptr;        (*S)->length++;        ptr++;    }}int StrInsert (SString *a , int pos , SString *b) {    int i;    if (pos <= 0 || pos >= MAXSIZE || pos > a->length)        return FALSE;    if (a->length + b->length <= MAXSIZE) {        for (i = 0 ; i < a->length - pos + 1 ; i++) {            a->string[a->length-i-1+b->length] = a->string[a->length-i-1];        }        for (i = 0 ; i < b->length ; i++)            a->string[pos-1+i] = b->string[i];        a->length += b->length;    }else if (pos + b->length <= MAXSIZE) {        for (i = 0 ; i < MAXSIZE - pos - b->length + 1 ; i++)            a->string[a->length-1+i+b->length] = a->string[a->length-1-i];        for (i = 0 ; i < b->length ; i++)            a->string[pos-1+i] = b->string[i];        a->length = MAXSIZE;    }else {        for (i = 0 ; i < MAXSIZE - pos + 1 ; i++)            a->string[pos-1+i] = b->string[i];        a->length = MAXSIZE;    }    return TRUE;}

地一个函数是初始化,第二个是插入函数,分三种情况讨论。

0 0
原创粉丝点击