1. 程式人生 > >String_Sequence(字串的順序儲存)

String_Sequence(字串的順序儲存)

#include<stdio.h>
#define MAXSIZE 100
typedef struct {
char str[MAXSIZE];
int length;
}seq;


void strinsert(seq *s, int i, seq t)
{
if (i<1 || i>MAXSIZE + 1 || s->length + t.length > MAXSIZE)
printf("不能進行插入!\n");
else
{
int k;
for (k = s->length - 1; k >= i - 1; k--)
s->str[k + t.length] = s->str[k];
for (k = 0; k < t.length; k++)
s->str[i - 1 + k] = t.str[k];
s->length = s->length + t.length;
s->str[s->length] = '\0';
}
}


void strdele(seq *s, int i, int len)
{
if (i<1 || i>MAXSIZE + 1 || i+len>s->length+1)
printf("不能進行刪除!\n");
else
{
int k;
for (k = i - 1+len; k <s->length; k++)
s->str[k -len] = s->str[k];
s->length = s->length -len;
s->str[s->length] = '\0';
}
}


seq *strconcat(seq s1, seq s2)
{
seq *s;
s = (seq *)malloc(sizeof(seq));
int k;
for (k = 0; k < s1.length; k++)
s->str[k] = s1.str[k];
s->length = s1.length;
if (s1.length + s2.length > MAXSIZE)
{
for (k = 0; k + s->length + 1 < MAXSIZE; k++)
s->str[s->length + k] = s2.str[k];
s->length = MAXSIZE;
s->str[s->length] = '\0';
}
else
{
for (k = 0; k < s2.length; k++)
s->str[s->length + k] = s2.str[k];
s->length = s1.length+s2.length;
s->str[s->length] = '\0';
}
return s;
}


seq *substring(seq s, int i, int len)
{
seq *t;
t = (seq *)malloc(sizeof(seq));
if (i<1 || i>MAXSIZE + 1 ||i+len-1 > MAXSIZE)
printf("沒有這樣的字串!\n");
else
{
int k;
for (k = 0; k < len; k++)
t->str[k] = s.str[k+i-1];
t->length =len;
t->str[t->length] = '\0';
}
return t;
}


void display(seq S)
{
int i;
for (i = 0; i < S.length; i++)
printf("%5c", S.str[i]);
putchar('\n');
}


void main()
{
seq *s;
s = (seq *)malloc(sizeof(seq));
seq *t;
t = (seq *)malloc(sizeof(seq));
s->str[0] = 'A';
s->str[1] = 'B';
t->str[0] = 'C';
t->str[1] = 'D';
s->length = 2;
t->length = 2;
display(*s);
display(*t);
strinsert(s, 3, *t);
display(*s);
strinsert(s, 3, *s);
display(*s);
strdele(s, 3, 3);
display(*s);
s = strconcat(*s, *t);
display(*s);
t = substring(*s, 2, 3);
display(*t);
}

相關推薦

String_Sequence字串順序儲存

#include<stdio.h> #define MAXSIZE 100 typedef struct {char str[MAXSIZE];int length; }seq; void strinsert(seq *s, int i, seq t) {if

資料結構3--棧java實現棧的順序儲存

1.棧      棧也叫堆疊,是一種限制只能在某一端進行插入和刪除操作的線性表                          

資料結構1--線性表java程式碼實現線性表的順序儲存

1.資料結構的概念      資料:資訊載體,計算機處理的物件的總稱      資料元素:也稱結點,組成資料的基本單位      資料項:資料項是資料的最小單位     &n

Java線性表順序儲存——陣列實現

第一次寫部落格,最近一直在研究資料結構,最開始準備用c語言寫資料資料結構的東西的,發現用c真的寫得我頭痛,果斷用了我喜歡的java實現,其實懂了過後用什麼語言寫都一樣的。不說了,直接上程式碼! 1.定義介面 抽象資料型別的List介面 public interface

初始資料結構——迴圈佇列順序儲存

佇列是隻允許在隊尾插入,隊頭刪除的受限制的線性表 因為普通佇列會出現假溢位現象,所以一般使用迴圈佇列 public class CircularQueue { private Object[] data; private int head; private

二叉樹的建立順序儲存

資料結構程式設計練習(六) 題目: 1)能夠呼叫遞迴函式讀取相應的資料建立二叉樹,相應資料格式自行設計;  2)實現先序、中序、後序遍歷二叉樹 3)求取二叉樹中的所有結點數 4)求取二叉樹的深度 輸入如圖所示二叉樹的方式為依次輸入:1,  2,3,  0,4,5,  

順序儲存C++模板實現

#include <iostream> using namespace std; template <typename T> class stack{ private: int top; //棧頂指標 int maxLen; //棧最大

資料結構學習之堆疊順序儲存

【摘要】在計算機領域,堆疊是一個不容忽視的概念,堆疊是兩種資料結構。堆疊都是一種資料項按序排列的資料結構,只能在一端(稱為棧頂(top))對資料項進行插入和刪除。在微控制器應用中,堆疊是個特殊的儲存區,主要功能是暫時存放資料和地址,通常用來保護斷點和現場。要點:

B. Minimum Ternary String字串的處理

You are given a ternary string (it is a string which consists only of characters '0', '1' and '2'). You can swap any two adjacent (consecutive)

例項:建立一個表格,分頁顯示資料MongoDB資料庫儲存,功能:實現增刪改查

需求:建立一個表格,分頁顯示資料,功能:實現增刪改查 效果圖: 自動建立一個專案 命令列: express mongodb-demo --view=ejs cd mongodb-demo npm install npm install mongodb --save npm sta

LeetCode周賽#105 Q1 Reverse Only Letters字串逆序

題目來源:https://leetcode.com/contest/weekly-contest-105/problems/reverse-only-letters/ 問題描述 917. Reverse Only Letters Given a string S, return

python3爬蟲 連結+表格+圖片本地+csv儲存

# -*- coding: utf-8 -*- import urllib.request import http.cookiejar from bs4 import BeautifulSoup import requests import csv import time import re i

NOIP 2005 提高組 T4 等價表示式字串亂搞

題意 給你好多表達式,求多少個和第一個等價。 題解 因為題目限制,只有一個變數 a a a,並且

python基礎字串方法[format]

字串 操作: 1.String.center(self, width, fillchar=None) :返回以長度寬度為width,字串在中心的字串。填充使用指定的填充字元完成(預設為空格) ,如果width小於字串的長度,則不截位,列印完整的字串。 Eg: String = “商品列表

【洛谷1580】yyy loves Easter_Egg I字串處理題

點此看題面 大致題意: 略。(一道模擬題,自己去看題面吧) 幾個字元陣列函式 純粹是一道字串處理題,就當是學了一下各種與字元陣列相關的函式吧! \(gets()\):這個是比較常用的函式,就是讀入一行的字元。 \(strlen()\):求出字元陣列的長度。 \(sscanf()\):從一個字元

【HihoCoder - 1850】字母去重 字串,思維

題幹: 給定一個字串S,每次操作你可以將其中任意一個字元修改成其他任意字元。 請你計算最少需要多少次操作,才能使得S中不存在兩個相鄰的相同字元。 Input 只包含小寫字母的字串S。   1 ≤ |S| ≤ 100000 Output 一個整數代表答案

初夏小談:有關函式strstr字串的查詢

實現strstr 函式(字串的查詢) 實現strstr思想:是從源字串中依次尋找目標字串的首元素,再依次比較之後的字串,如果目標字串與所找位置都相同就返回,否則從源字串的下一個字元開始尋找,一次循壞。 #include<Aventador_SQ.h> int Strstr(ch

軟考-作業系統程序、儲存

程序 程序的基本概念、狀態轉換:略 掛起狀態:記憶體當中的程序對映到外存的一個過程 超時:超過使用者可用的時間   程序死鎖 避免死鎖演算法:銀行家演算法:避免死鎖的演算法。仿銀行貸款業務,需稽核,驗是否有還款能力   前趨圖:程序執行的先後順序。

本地儲存localStorage,sessionStorage,cookies歷史記錄儲存

特性 設定、讀取方便 容量較大,sessionStorage約5M、localStorage約20M 只能儲存字串,可以將物件JSON.stringify() 編碼後儲存 window.sessionStorage 生命

PAT乙級——1076字串拆解 判斷Java實現

題目:Wifi密碼 (15 分) 下面是微博上流傳的一張照片:“各位親愛的同學們,鑑於大家有時需要使用 wifi,又怕耽誤親們的學習,現將 wifi 密碼設定為下列數學題答案:A-1;B-2;C-3;D-4;請同學們自己作答,每兩日一換。謝謝合作!!~”—— 老師們為了促進學生學習也