這是乙個
/*此標頭檔案適用於串
其中包括最基本的函式操作
ok代表成功
no代表失敗
fs為特殊失敗的標誌
注:此標頭檔案中的初始化使用'0'代表結束的
使用者可以根據需要自行改變,最後一
個函式為kmp演算法,可以根據需要使用
#include
#include
#define ok 1
#define no 0
#define fs -1
typedef int nowname;
typedef struct strand
strand;
/*初始化、賦值函式
*/nowname strassign(strand *t,char *chars)
if(sum == 0)
else
for (int i = 0; i < sum; i++)
t->length = sum;
}return ok;}/*
對串進行輸出
*/void out(strand *s)
printf("\n");}/*
長度輸出函式
*/nowname length(strand *t)
/*字串的連線函式
*/void concat(strand *t,strand *s1,strand *s2)
j = s1->length;
for (int i = 0; i < s2->length; i++ , j++)}/*
主串s的pos位置後長度為len的子串,用sub返回
*/strand * substring(strand *sub,strand *s,nowname pos,nowname len)
for (int i = pos-1,j = 0; j < len; i++,j++)
sub->length = len;
return sub;}/*
返回子串t在主串s的第pos個位置後首次出現的位置
*/int index(strand *s,strand *t,int pos)
else
//printf("%d\n",sum);
if(i == t->length)
}return no;}/*
串之間的比較
0 兩個字串相同
1 t大於s
-1 s大於t
*/nowname strcompare(strand *t,strand *s)
if(t->length == s->length)
return no;
if(t->length-s->length>0)
return ok;
else
return fs;}/*
清空串*/
void nullstrand(strand *t)
}int * next(strand *s,int *next)
if(s->chars[i] == s->chars[j])
//printf("3\n");
next[i] = j;
i++;
}//printf("4\n");
/*右移,並且加1
*/for(int i = s->length-1; i >=1 ; i--)
next[0] = 0;
return next;
}
資料結構(C語言版)
用棧實現數字的進製轉換 10轉8 棧 限定只能在表尾進行插入或者刪除操作的線性表 特點 先進後出 儲存表示方法 順序棧和鏈棧 本文用的順序棧 實現 readonly name code class c include include define stack init size 100 儲存空間初始...
《資料結構(C語言版)》綜述
第一章 緒論 將於4月20日學習完畢,含課後題以及資料練習題 1.1什麼是資料結構 1.2基本概念和術語 1.3抽象資料結構型別的表示與實現 1.4演算法和演算法分析 1.4.1演算法 1.4.2演算法設計的要求 1.4.3演算法效率的度量 第二章 線性表 2.1線性表的型別定義 2.2線性表的順序...
讀資料結構(C語言版)
資料 資料是對現實世界物質的符號表示,在計算機中的意思是能輸入到計算機中進行計算處理的符號為資料 實現是客觀世界在計算機中的表示方式,是程式加工的原材料。資料可以是聲音,文件 資料元素 組成資料的基本構成單位,通常以結構化的形式出現,比如一本書的書目資訊,包含作者,書名,出版刊號,出版社這些資料項,...