『壹』 串的順序存儲結構和鏈式存儲結構該怎樣表示呀!
順序存儲結構就是 數組比如int a[5],通過下標引用;
鏈式存儲就是 鏈表
『貳』 串的特點數據結構
串的特點:
1、串是引用類型:串的數據是存儲在堆空間中,棧空間中的變數存儲了該數據的引用地址。
2、串是不可變的:當給一個串變數重新賦值時,舊值並沒有銷毀,而是重新開辟一塊空間來存新值。
3、串可以看做是一個只讀的字元數組:也就是說我們可以用for循環遍歷字元串,得到所有的單個字元;也可以用 變數名[索引下標] 的形式得到相對應的字元。
『叄』 串的定長順序存儲
這個是偽代碼,不是C/C++的語法。在Pascal中存在類似的語法。
T[1..S1[0]]表示T的下標取值范圍為1至s1[0],假定滿足1<=S1[0]。這個范圍可以包含S1[0]也可以不包含S1[0](具體是什麼,要看具體的書中的習慣用法了)。
====
[原創回答團]
『肆』 常用的串存儲結構是哪一種
**線性存儲結構 **樹形存儲結構 **圖形存儲結構 線性存儲結構:包括順序,鏈接,索引,散列四種
『伍』 存儲結構有哪些
存儲結構有順序存儲和鏈接存儲。順序存儲和鏈接存儲是數據的兩種最基本的存儲結構。
1、順序存儲
順序存儲方法是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接關系來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。
2、鏈接存儲
鏈接存儲方法它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現。
(5)串的存儲結構有安歇擴展閱讀:
數據的存儲結構是指數據的邏輯結構在計算機中的表示。數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。
儲存系統的層次結構為了解決存儲器速度與價格之間的矛盾,出現了存儲器的層次結構。
『陸』 串和字元的存儲結構有什麼不同串通常採用什麼存儲結構
1、所有數據在計算機中,存放的均是二進制串,只有不同類型的數據在讀寫時按照讀寫的方式不同;
2、c++中的string類型是類對象,字元串是
char類型的數組,char則是更基本的類型。如果不懂類對象與char數組的區別的話,可以取了解一下c++的類。對於字元串與字元的區別的話,那就基本是批發與零售的區別了。
『柒』 c++串的順序存儲結構,盡量簡單【四個功能,增刪改查】
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefstructNode
{
chardata;
structNode*next;
}node;
voidInsert(node*);//插入
voidFind(node*);//查找
intCount(node*);//鏈表長度
voidUpdate(node*);//修改
voidDelete(node*);//刪除
voidShow(node*);//輸出
intmain()
{
inta;
nodehead;
head.next=NULL;
printf("***********鏈表的操作************ ");
while(1)
{
a=0;
printf("***********請選擇您的操作*********** ");
printf("1鏈表的插入 2鏈表的查找 3鏈表的修改 4鏈表的刪除 5鏈表的輸出 6退出系統 ");
scanf("%d",&a);
switch(a)
{
case1:
Insert(&head);
break;
case2:
Find(&head);
break;
case3:
Update(&head);
break;
case4:
Delete(&head);
break;
case5:
Show(&head);
break;
case6:
exit(-1);
break;
default:
printf("輸入錯誤!");
break;
}
}
return0;
}
intCount(node*head)
{
node*pH=head;
intcount=0;
while(pH->next!=NULL)
{
pH=pH->next;
count++;
}
returncount;
}
voidInsert(node*head)
{
intwhich=0;
inti=0;
intj=1;
charch;
node*pH=head;
printf(" 1.首插入2.未插入3.插入到位置i ");
printf("請選擇:");
scanf("%d",&which);
ch=getchar();
if(which==1)
{
printf("請輸入值:");
scanf("%c",&ch);
node*q=(node*)malloc(sizeof(Node));
q->data=ch;
q->next=pH->next;
pH->next=q;
}
elseif(2==which)
{
while(pH->next!=NULL)
{
pH=pH->next;
}
printf("請輸入值:");
scanf("%c",&ch);
node*q=(node*)malloc(sizeof(Node));
q->data=ch;
q->next=pH->next;
pH->next=q;
}
elseif(3==which)
{
printf("請輸入i的值:");
scanf("%d",&i);
ch=getchar();
if((i>0)&&(i<=Count(head)+1))
{
printf("i=%d",i);
while(j<i)
{
pH=pH->next;
j++;
}
printf("請輸入值:");
scanf("%c",&ch);
node*q=(node*)malloc(sizeof(Node));
q->data=ch;
q->next=pH->next;
pH->next=q;
}
else
{
printf("i輸入錯誤! ");
}
}
else
{
printf("選擇錯誤! ");
}
return;
}
voidShow(node*pH)
{
printf("鏈表輸出: ");
if(pH->next==NULL)
{
printf("鏈表為空! ");
return;
}
else
{
while(pH->next!=NULL)
{
pH=pH->next;
printf("%3c",pH->data);
}
printf(" 輸出結束! ");
}
}
voidFind(node*head)
{
intwhich=0;
intj=0;
inti=0;
charch;
boolis_have=false;
node*q=head->next;
if(Count(head)==0)
{
printf("鏈表為空!無法查找. ");
return;
}
printf("1.查找內容的位置2.查找位置的內容 ");
scanf("%d",&which);
ch=getchar();
if(1==which)
{
printf("請輸入要查找的內容:");
scanf("%c",&ch);
while(q!=NULL)
{
j++;
if(q->data==ch)
{
printf("%c是第%d個。 ",ch,j);
is_have=true;
}
q=q->next;
}
if(is_have==false)
{
printf("所查找的內容在鏈表中不存在!");
}
}
elseif(2==which)
{
j=0;
printf("請輸入要查找的位置:");
scanf("%d",&i);
if(i>Count(head)||i<1)
{
printf("位置錯誤!無法查找。 ");
return;
}
while(q!=NULL&&j<i-1)
{
q=q->next;
j++;
}
printf("內容為:%c",q->data);
}
else
{
printf("選擇錯誤! ");
}
return;
}
voidUpdate(node*head)
{
node*q=head->next;
inti=0;
intj=0;
charch;
if(Count(head)==0)
{
printf("鏈表為空!無法查找. ");
return;
}
printf("請輸入要修改的位置:");
scanf("%d",&i);
ch=getchar();
if(i>Count(head)||i<1)
{
printf("位置錯誤!無法修改。 ");
return;
}
printf("請輸入修該的值:");
scanf("%c",&ch);
while(q!=NULL&&j<i-1)
{
q=q->next;
j++;
}
q->data=ch;
printf("修改成功! ");
return;
}
voidDelete(node*head)
{
node*q=head->next;
node*p=head;
inti=0;
intj=0;
charch;
if(Count(head)==0)
{
printf("鏈表為空!無法刪除. ");
return;
}
printf("1.全部刪除2.刪除單個 ");
scanf("%d",&i);
ch=getchar();
if(1==i)
{
while(q!=NULL)
{
p=p->next;
q=q->next;
free(p);
}
head->next=NULL;
printf("釋放成功! ");
}
elseif(2==i)
{
printf("請輸入要刪除的位置:");
scanf("%d",&i);
ch=getchar();
if(i>Count(head)||i<1)
{
printf("位置錯誤!無法刪除。 ");
return;
}
while(q!=NULL&&j<i-1)
{
p=p->next;
q=q->next;
j++;
}
p->next=q->next;
free(q);
printf("刪除成功! ");
}
else
{
printf("選擇錯誤! ");
}
}
『捌』 什麼是串接存儲
數據結構中,字元串要單獨用一種存儲結構來存儲,稱為串存儲結構。這里的串指的就是字元串。
嚴格意義上講,串存儲結構也是一種線性存儲結構,因為字元串中的字元之間也具有"一對一"的邏輯關系。只不過,與之前所學的線性存儲結構不同,串結構只用於存儲字元類型的數據。
無論學習哪種編程語言,操作最多的總是字元串。數據結構中,根據串中存儲字元的數量及特點,對一些特殊的串進行了命名,比如說:
空串:存儲 0 個字元的串,例如 S = ""(雙引號緊挨著);
空格串:只包含空格字元的串,例如 S = " "(雙引號包含 5 個空格);
子串和主串:假設有兩個串 a 和 b,如果 a 中可以找到幾個連續字元組成的串與 b 完全相同,則稱 a 是 b 的主串,b 是 a 的子串。例如,若 a = "shujujiegou",b = "shuju",由於 a 中也包含 "shuju",因此串 a 和串 b 是主串和子串的關系;
需要注意的是,空格串和空串不同,空格串中含有字元,只是都是空格而已。另外,只有串 b 整體出現在串 a 中,才能說 b 是 a 的子串,比如 "shujiejugou" 和 "shuju" 就不是主串和子串的關系。
另外,對於具有主串和子串關系的兩個串,通常會讓你用演算法找到子串在主串的位置。子串在主串中的位置,指的是子串首個字元在主串中的位置。