數據結構順序存儲通訊錄
A. 個人通訊錄管理系統的數據元素是什麼 邏輯機構是什麼 存儲結構是什麼 求回復
數據元素(data element)是計算機科學術語。它是數據的基本單位,數據元素也叫做結點或記錄。在計算機程序中通常作為一個整體進行考慮和處理。有時,一個數據元素可由若干個數據項組成,例如,一本書的書目信息為一個數據元素,而書目信息的每一項(如書名、作者名等)為一個數據項。數據項是數據的不可分割的最小單位。
系統的邏輯結構是對整個系統從思想的分類,把系統分成若干個邏輯單元,分別實現自己的功能。一般在系統開發時,邏輯結構往往都由架構師完成。系統的邏輯結構對系統的開發起到重要性的決定。
數據的邏輯結構是對數據之間關系的描述,有時就把邏輯結構簡稱為數據結構。邏輯結構形式地定義為(K,R)(或(D,S)),其中,K是數據元素的有限集,R是K上的關系的有限集。
數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。數據的存儲結構是指數據的邏輯結構在計算機中的表示。
(1)數據結構順序存儲通訊錄擴展閱讀
順序存儲和鏈接存儲的基本原理
順序存儲和鏈接存儲是數據的兩種最基本的存儲結構。
在順序存儲中,每個存儲空間含有所存元素本身的信息,元素之間的邏輯關系是通過數組下標位置簡單計算出來的線性表的順序存儲,若一個元素存儲在對應數組中的下標位置為i,則它的前驅元素在對應數組中的下標位置為i-1,它的後繼元素在對應數組中的下標位置為i+1。在鏈式存儲結構中,存儲結點不僅含有所存元素本身的信息,而且含有元素之間邏輯關系的信息。
數據的鏈式存儲結構可用鏈接表來表示。
其中data表示值域,用來存儲節點的數值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個指針域為其對應的後繼元素或前驅元素所在結點(以後簡稱為後繼結點或前驅結點)的存儲位置。通過結點的指針域(又稱為鏈域)可以訪問到對應的後繼結點或前驅結點,若一個結點中的某個指針域不需要指向其他結點,則令它的值為空(NULL)。
在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中,由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。
B. 用c語言對以下通訊錄用順序表來實現儲存
#include<stdio.h>
typedefstruct
{
intxh;
charxm[10];
chartel[12];
}STU;
typedefSTUElemType;
typedefstruct
{
ElemTypedata[10];
intlength;
}SqList;
intmain()
{
SqListl={{{178101,"楊文","13788041567"},{178102,"張江","13478920019"},{178103,"李華","15077402345"},{178104,"黃麗","15867748903"},{178105,"劉寧","18977410656"}},5};
inti;
printf("學號 姓名 手機號碼 ");
for(i=0;i<l.length;i++)
{
printf("%d %s %s ",l.data[i].xh,l.data[i].xm,l.data[i].tel);
}
return0;
}
C. 數據結構的幾種存儲方式
數據的存儲結構是數據結構的一個重要內容。在計算機中,數據的存儲結構可以採取如下四中方法來表現。
1) 順序存儲方式
簡單的說,順序存儲方式就是在一塊連續的存儲區域
一個接著一個的存放數據。順序存儲方式把邏輯上相連的結點存儲在物理位置上相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接掛安息來體現。順序存儲方式也稱為順序存儲結構( sequential
storage structure ),一般採用數組或者結構數組來描述。
線性存儲方式主要用於線性邏輯結構的數據存放,而對於圖和樹等非線性邏輯結構則不適用。
2) 鏈接存儲方式
鏈接存儲方式比較靈活,其不要求邏輯上相鄰的結點
在物理位置上相鄰,結點間的邏輯關系由附加的引用欄位表示。一個結點的引用欄位往往指導下一個結點的存放位置。
鏈接存儲方式也稱為鏈接式存儲結構( Linked
Storage Structure ),一般在原數據項中增加應用類型來表示結點之間的位置關系。
3) 索引存儲方式
索引存儲方式是採用附加索引表的方式來存儲結點信
息的一種存儲方式。索引表由若干個索引項組成。索引存儲方式中索引項的一般形式為:(關鍵字、地址)。其中,關鍵字是能夠唯一標識一個結點的數據項。
索引存儲方式還可以細分為如下兩類:
* 稠密索引( Dense Index ) : 這種方式中每個結點在索引表中都有一個索引項。其中,索引項的地址指示結點所在的的存儲位置;
* 稀疏索引( Spare Index ):這種方式中一組結點在索引表中只對應一個索引項。其中,索引項的地址指示一組結點的起始存儲位置。
4) 散列存儲方式
散列存儲方式是根據結點的關鍵字直接計算出該結點
的存儲地址的一種存儲的方式。
在實際應用中,往往需要根據具體數據結構來決定採用哪一種存儲方式。同一邏輯結構採用不同額存儲方法,可以得到不同的存儲結構。而且這四種節本存儲方法,既可以單獨使用,也可以組合起來對數據結構進行存儲描述。
歡迎加入技術學習 QQ 群: 364595326
D. python用單鏈表寫一個通訊錄,包括添加,刪除(可恢復),查找等基本功能
///////////list3.c實現鏈表的插入刪除查找
#include
#include
#include
typedef
struct
LNode
//////////定義數據結構體
{
int
num;
char
name[20];
struct
LNode*
next;
}*Link;
///////////定義一個指針類型
typedef
struct
{
Link
head,tail;
int
len;
}LinkList;
LinkList
*gList;
void
MenuInfo();
void
InputData(LinkList
*mList);
void
OutputData(LinkList
*mList);
void
InsertData(LinkList
*mList,int
n);
Link
SearchNode(LinkList
*mList,int
n);
void
DeleteData(LinkList
*mList,int
n);
void
main()
{
int
_choice;
int
_quit=0;
int
n=0;
gList=(LinkList
*)malloc(sizeof(LinkList));
gList->head=gList->tail=NULL;
do
{
MenuInfo();
scanf("%d",&_choice);
switch(_choice)
E. 數據結構上機: 用順序存儲結構建立一個通訊錄。內容有姓名,地址,電話號碼。。。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define SIZE 10
struct AddrList
{
string name;
string sex;
int age;
string QQ;
}addrlist[SIZE];
int main()
{
int i;
int j;
cout<<"輸入要輸入的記錄數量:";
cin>>i;
if (i>SIZE)
{
cout<<"輸入的記錄數量大於順序表的最大長度!"<<endl;
return 0;
}
cout<<"輸入格式:\n姓名 性別 年齡 QQ\n"<<endl;
for (j=0;j<i;++j)
{
cout<<"輸入第"<<j+1<<"條記錄"<<endl;
cin>>addrlist[j].name>>addrlist[j].sex>>addrlist[j].age>>addrlist[j].QQ;
}
cout<<"\n姓名\t性別\t年齡\tQQ"<<endl;
for (j=0;j<i;++j)
{
cout<<addrlist[j].name<<"\t"<<addrlist[j].sex<<"\t"<<addrlist[j].age<<"\t"<<addrlist[j].QQ<<endl;
}
return 0;
}
輸入:2
張三 男 23 123456
李四 女 24 66666