串
串是一种特殊的线性表,但是数据对象约束在字符集,且以整个串作为操作对象。
#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
//顺序串的结构描述
typedef struct{
char ch[maxsize]; //存放串值
int len; //串的长度 !=最后一个结点的下标 \0不属于串值
}seqstring;
seqstring *s;
//链串的结构描述
typedef struct linknode{
char data;
struct linknode *next;
}linkstring;
linkstring *s;
//带长度的索引表的结点类型
typedef struct{
char name[maxsize];
int length;
char *stadr; //串值传入的起始地址
};
//带末指针的索引表的结点类型
typedef struct{
char name[maxsize];
char *stadr,*enadr; //用指向末地址的指针enadr来代替长度len
}enode;
//带特征位的索引表
typedef struct{
char name[maxsize];
int tag;
union{
char *stadr;
char value[4];
}uval;
}tagnode;
//串的连接,s串和t串连接成一个R串,s在前t在后
seqstring *STRCAT(seqstring *s,seqstring*t){
int i;
seqstring *R,*t;
printf("s=%s t=%s\n",s->ch,t->ch);
for(i=0;i<s->len;i++){ //先把s传到R
R->ch[i]=s->ch[i];
}
for(i=0;i<t->len;i++){ //把t传到R
R->ch[s->len+i]=t->ch[i];
}
R->ch[s->len+i]='\0'; //最后一个位置赋\0
R->len=s->len+t->len; //串长度等于两个之和
return R;
}