當前位置:首頁 » 服務存儲 » 串的其他存儲結構的實現
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

串的其他存儲結構的實現

發布時間: 2023-06-17 21:32:14

❶ 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("選擇錯誤! ");
}

}

❷ 我是湖南邵陽職業技術學院的專科學生,學的是計算機科學與技術,然後明年升考吉首大學的 計算機科學與應用

《微機原理》考試大綱
第一章 概述
1.計算機中的數和編碼系統
(1)理解計算機中的數制的概念,會應用;(2)掌握二進制編碼的方法;
(3)掌握二進制運算的規則;(4)掌握帶符號數的表示方法及表示範圍;
2.了解計算機的硬體和軟體的劃分及功能
3.微型計算機的結構
(1)了解微型計算機的外部結構;
(2)了解微型計算機的內部結構;
4. Intel 8088的結構
(1)掌握8088的寄存器結構;(2)掌握8088的功能結構;
(3)掌握存儲器組織;
第二章 8088的指令系統
1.掌握8088的定址方式
(1)立即定址(2)直接定址(3)寄存器定址(4)寄存器間接定址(5)變址定址(6)基址加變址的定址方式
2.掌握8088標志寄存器中的9個標志位
3.掌握8088的指令系統
(1)數據傳送指令(2)算術運算指令(3)邏輯運算指令
第三章 匯編語言程序設計
1.正確掌握匯編語言的格式;
2.了解語句行的構成,會應用;
3.理解指示性語句,會正確使用;
4.掌握基本的匯編語言程序設計
(1)循環程序設計(2)參數傳送技術(3)子程序設計
第四章 8088的匯流排操作和時序
1.基本概念
(1)正確理解指令周期、匯流排周期和T狀態的概念;
(2)掌握CPU的時序和存儲器以及外設的時序概念;
2. 8088的匯流排
(1)掌握8088的兩種組態的區別;
3.掌握8088典型時序
(1)存儲器讀周期(2)存儲器寫周期(3)中斷響應周期
4.最大組態下的8088時序與最小組態的8088時序區別
5.計數器和定時器電路Intel 8253-PIT
(1)了解8253-PIT晶元的主要功能及內部結構;(2)會寫8253-PIT的控制字;(3)掌握8253-PIT的工作方式;(4)掌握8253-PIT編程步驟;
第五章 半導體存儲器
1.解半導體存儲器的分類
2.讀寫存儲器RAM
(1)了解基本存儲電路(2)理解RAM的結構(3)掌握RAM與CPU的連接要考慮的主要問題;會根據連接圖寫出定址范圍
第六章 輸入和輸出
1.了解輸入輸出的定址方式
2.掌握CPU與外設數據傳送的方式
(1)無條件傳送方式(2)查詢傳送方式(3)中斷傳送方式(4)直接數據通道傳送(DMA)
第七章 中斷
1.中斷的引入
(1)理解為什麼要用中斷(2)掌握中斷系統的功能
2.最簡單的中斷情況
(1)掌握CPU響應中斷的條件(2)掌握CPU對中斷的響應
4. 8088的中斷方式
(1)掌握兩條外部中斷請求線及使用
(2)掌握內部中斷類型號
(3)掌握8088中斷優先權次序
(4)掌握8088中斷向量表的大小、中斷向量的個數及中斷入口地址的求法
(5)掌握8088中的中斷響應和處理過程
第八章 並行介面片子
1.了解可編程的輸入輸出介面晶元8255A-5的功能和結構
2.掌握8255A各埠的工作方式及功能

教材:《微型計算機系統原理及應用》 周明德, 清華大學出版社
參考書:
1、《微型計算機原理與介面技術》李蘭友等編,南開大學出版社,2001年版�
2、《計算機電路基礎》王金剛編,南開大學出版社,2001年版�

考題類型及分數分布:
本課程考試試題類型填空題、分析程序題、簡答題、綜合應用題四種形式,其中填空題20分、分析程序題15分、簡答題20分,綜合應用題20分
《數據結構》考試大綱
第一章 緒論
一、學習目的和要求
本章的目的是介紹數據結構中常用的基本概念和術語以及學習數據結構的意義。
本章要了解數據的抽象類型定義。理解演算法在實際問題中的應用。重點掌握各種基本概念和術語、演算法描述和分析的方法。
二、課程內容
第一節 什麼是數據結構
第二節 基本概念和術語
第三節 抽象數據類型的表示與實現
第四節 演算法和演算法分析
三、考核知識點
1、 合適的數據結構在解決實際應用問題中的關鍵性;以及學習《數據結構》的意義。
2、 數據、數據元素、數據項、數據結構等基本概念。
3、 數據結構的四種邏輯結構和兩種存儲結構表示方法。
4、 抽象數據類型的表示和實現
5、 演算法的五個特點。
6、 演算法、演算法的時間復雜度和空間復雜度、最壞的和平均的時間復雜度等概念。
7、 演算法描述和演算法分析的方法,對於一般演算法能分析出時間復雜度。
四、考核要求
1. 識記
1) 數據結構的基本概念和術語。
2) 合適的數據結構在解決實際應用問題中的關鍵性,以及學習《數據結構》的意義。
3) 數據結構的四種邏輯結構和兩種存儲結構表示方法。
2. 領會
1) 演算法的描述和分析:演算法的時間復雜度和空間復雜度、最壞的和平均的時間復雜度
第二章 線性表
一、學習目的和要求
本章的目的是介紹線性表的邏輯結構和各種存儲表示方法,以及定義在邏輯結構上的各種基本運算及其在存儲結構上如何實現這些基本運算。要求在熟悉這些內容的基礎上,能夠針對具體應用問題的要求和性質,選擇合適的存儲結構設計出相應的有效演算法,解決與線性表相關的實際問題。
本章重點是熟練掌握順序表和單鏈表上實現的各種基本運算及相關的時間性能分析,難點是在循環鏈表和雙向鏈表存儲結構中各種基本運算的實現。
二、課程內容
第一節 線性表的類型定義
第二節 線性表的順序表示和實現
第三節 線性表的鏈式表示和實現
三、考核知識點
1、 線性表的類型定義
2、 順序表的含義及特點,順序表上的插入、刪除操作及其平均時間性能分析
3、 鏈式表示和實現,單鏈表、雙鏈表、循環鏈表鏈接方式上的區別;
4、 單鏈表上實現的建表、查找、插入和刪除等基本演算法及其時間復雜度。
5、 循環鏈表上尾指針取代頭指針的作用
6、 單循環鏈表上的演算法與單鏈表上相應演算法的異同點。
7、 雙向鏈表的定義和相關演算法。
8、 順序表和鏈表的比較,以及如何選擇其一作為其存儲結構才能取得較優的時空性能。
四、考核要求
1. 識記
1) 線性表的邏輯結構特徵;
2) 線性表上定義的基本運算,並利用基本運算構造出較復雜的運算。
2. 領會
1) 順序表和鏈表的比較,各自的優缺點。
2) 針對線性表上所需要執行的主要操作,知道選擇順序表還是鏈表作為其存儲結構才能取得較優的時空性能。
3. 綜合應用
1) 順序表的含義及特點,順序表上的插入、刪除操作及其平均時間性能分析。
2) 單鏈表、雙鏈表、循環鏈表鏈接方式上的區別;
3) 單鏈表上實現的建表、查找、插入和刪除等基本演算法及其時間復雜度。
4) 循環鏈表上尾指針取代頭指針的作用,
5) 單循環鏈表上的演算法與單鏈表上相應演算法的異同點。
6) 雙鏈表的定義和相關演算法。
第三章 棧和隊列
一、學習目的和要求
本章的目的是介紹棧和隊列的邏輯結構定義及在兩種存儲結構上如何實現棧和隊列的基本運算。要求在掌握棧和隊列的特點的基礎上,懂得在什麼樣的情況下使用棧或隊列。
本章重點是掌握棧和隊列在兩種存儲結構上實現的基本運算,難點是循環隊列中對邊界條件的處理
二、課程內容
第一節 棧
第二節 棧的應用舉例
第四節 隊列
三、考核知識點
1、 棧的抽象數據類型的定義
2、 棧的表示和實現
3、 棧的簡單應用
4、 抽象數據類型隊列的定義
5、 隊列的鏈式表示和實現
6、 隊列的順序表示和實現
四、考核要求
1. 領會
1) 棧和隊列的特點,棧和隊列各自的使用情況。
2. 綜合應用
1) 棧的邏輯結構特點,棧與線性表的異同。
2) 順序棧和鏈棧上實現進棧、退棧等基本演算法。
3) 利用棧解決簡單的實際問題。
4) 隊列邏輯結構特點,隊列與線性表的異同。
5) 順序隊列(主要是循環隊列)和鏈隊列上實現的入隊、出隊等基本演算法。
6) 順序隊列的「假溢出」現象及其採用循環隊列進行解決的方法。
第四章 串
一、學習目的和要求
本章的目的是介紹串的邏輯結構、存儲結構及其串上的基本運算。本章重點是掌握串的基本概念和三種表示方法,這也是難點。
二、課程內容
第一節 串類型的定義
第二節 串的表示和實現
三、考核知識點
1、 串的定義、空串、空格串、子串、主串、串相等。
2、 串的基本操作。
3、 串的順序存儲結構及在順序存儲結構下基本操作的實現。
4、 串的堆分配存儲表示及其在堆分配存儲結構下基本操作的實現。
5、 串的鏈式存儲表示
四、考核要求
1. 領會
1) 串的有關概念及其基本運算
2. 簡單應用
1) 串的三種存儲表示
2) 使用串解決與串相關的簡單的應用問題
第五章 數組和廣義表
一、學習目的和要求
本章的目的是介紹多維數組的邏輯結構特徵及其存儲方式,特殊矩陣和稀疏矩陣的壓縮存儲方法及廣義表的概念,要求熟悉這些內容。
本章重點是熟悉多維數組的存儲方式、矩陣的壓縮存儲方式、廣義表的定義及其表頭表尾的運算,難點是稀疏矩陣的壓縮存儲表示下轉置運算。
二、課程內容
第一節 數組的定義
第二節 數組的順序表示和實現
第三節 矩陣的壓縮存儲
第四節 廣義表的定義
第五節 廣義表的存儲結構
三、考核知識點
1、 數組的順序存儲結構。
2、 二維數組的按行存儲及按列存儲和計算數組元素的地址計算公式。
3、 矩陣的壓縮存儲、特殊矩陣的表示。
4、 廣義表的定義和操作(HEAD和TAIL)
5、 廣義表的2種存儲結構
四、考核要求
1. 領會
1) 多維數組的邏輯結構特徵
2) 多維數組的順序存儲結構及其地址計算方式
3) 特殊矩陣和稀疏矩陣的概念
4) 稀疏矩陣的壓縮存儲方式——三元組表
5) 稀疏矩陣的兩種轉置運算演算法
6) 廣義表的概念、廣義表和線性表的聯系
7) 廣義表表頭和表尾的概念及廣義表兩個特殊的基本運算,取表頭和取表尾。
8) 廣義表的兩種存儲結構
第六章 樹和二叉樹
一、學習目的和要求
本章的目的是介紹二叉樹的定義、性質、存儲結構、遍歷、線索化,樹的定義、存儲結構、遍歷、樹和森林的轉換及赫夫曼樹及其赫夫曼編碼等內容。本章重點是掌握二叉樹及其二叉樹的遍歷。難點是掌握與樹有關的簡單應用。
二、課程內容
第一節 樹的定義和基本術語
第二節 二叉樹
第三節 遍歷二叉樹和線索二叉樹
第四節 樹和森林
第六節 赫夫曼樹及其應用
三、考核知識點
1、 樹的定義和術語。
2、 二叉樹(完全二叉樹、滿二叉樹)的定義和性質(結論)、二叉樹的存儲結構——順序表示法和鏈表表示法。
3、 二叉樹的三種遍歷方法及相應的遞歸演算法。
4、 二叉樹線索化的目的及其實質。
5、 樹的存儲表示法——孩子表示法、雙親表示法、孩子兄弟表示法。
6、 樹和森林及二叉樹的轉換方法。
7、 樹和森林的遍歷
8、 樹的路徑長度、樹的帶權路徑長度、赫夫曼樹(最優二叉樹)的構造方法。
9、 赫夫曼編碼方法
四、考核要求
1. 領會
1) 樹的邏輯結構特徵
2) 樹的不同表示方法
3) 樹的常用術語及含義
4) 二叉樹線索化的目的及實質
5) 在中序線索樹中查找給定結點的中序前驅和中序後繼的方法
6) 樹和森林與二叉樹之間的轉換方法
7) 樹的各種存儲結構及其特點
8) 樹的遍歷方法
2. 簡單應用
1) 二叉樹的定義及樹與二叉樹的差別
2) 二叉樹的性質,了解相應的證明方法
3) 二叉樹的兩種存儲結構、特點及適用范圍
4) 最優二叉樹和前綴編碼的概念及特點
5) 赫夫曼演算法的思想
6) 根據給定的葉結點及其權值構造出相應的最優二叉樹
7) 根據最優二叉樹構造對應的赫夫曼編碼
3. 綜合應用
1) 二叉樹的三種遍歷演算法,理解其執行過程
2) 根據不同的遍歷方法,應能得出其相應的結點訪問次序
3) 以遍歷演算法為基礎,設計有關演算法解決簡單的應用問題
第七章 圖
一、學習目的和要求
本章的目的是介紹圖的基本概念、兩種常用的存儲結構、兩種遍歷方法以及圖的應用演算法。本章重點是掌握圖的兩種存儲結構上實現的遍歷演算法。難點是圖的應用演算法:最小生成樹,求最短路徑以及拓撲排序。只要求掌握這些演算法的基本思想及時間性能。
二、課程內容
第一節 圖的定義和術語
第二節 圖的存儲結構
第三節 圖的遍歷
第四節 圖的連通性問題
第五節 有向無環圖及其應用
第六節 最短路徑
三、考核知識點
1、 圖的邏輯結構特徵
2、 圖的常用術語及含義
3、 圖的鄰接矩陣表示法存儲結構
4、 鄰接表表示法
5、 圖的深度優先遍歷
6、 圖的廣度優先遍歷
7、 生成樹和最小生成樹
8、 構造最小生成樹的PRIM演算法思想和時間性能
9、 構造最小生成樹的Kruskal演算法思想和時間性能
10、 拓撲排序
11、 關鍵路徑
12、 關於最短路徑的演算法——Dijkstra演算法思想
四、考核要求
1. 領會
1) 圖的邏輯結構及特徵
2) 圖的常用術語及含義
3) 生成樹和最小生成樹的概念
4) 對給定的圖遍歷,畫出深度優先和廣度優先生成樹或森林
5) Prim和 Kruskal演算法的基本思想、時間性能及這兩種演算法各自的特點
6) 要求對給定的連通圖,根據Prim和Kruskal演算法構造最小生成樹
7) 最短路徑的含義
8) 求單源點的最短路徑問題的Dijkstra演算法的基本思想和時間性能
9) 拓撲排序的基本思想和步驟
10) 拓撲排序不成功的原因
11) 對給定的有向圖,若拓撲序列存在,則要求寫出一個或多個拓撲序列
2. 簡單應用
1) 圖的鄰接矩陣表示法和鄰接表表示法
2) 根據應用問題的特點選擇合適的存儲結構
3) 連通圖及非連通圖的深度優先搜索和廣度優先搜索兩種遍歷演算法。
4) 確定兩種遍歷的頂點訪問序列
5) 圖的兩種遍歷和樹的遍歷之間的關系
6) 兩種遍歷演算法分別使用的數據結構(棧和隊列)
7) 利用圖的遍歷解決簡單的應用問題
第九章 查找
一、學習目的和要求
本章的目的是介紹線性表、樹和哈希表的查找方法、演算法實現以及各種查找方法的時間性能(平均查找長度)分析。重點掌握順序查找、折半查找、二叉排序樹和哈希表查找的基本思想和演算法實現。難點是二叉排序樹上的刪除演算法。
二、課程內容
第一節 靜態查找表
第二節 動態查找表
第三節 哈希表
二、 考核知識點
1、 查找的定義關鍵字、查找、平均查找長度
2、 靜態查找表的查找演算法(順序查找、折半查找、分塊查找(索引順序表的查找)) 及其效率(最壞和平均長度)。
3、 二叉排序樹的查找演算法及其效率。
4、 平衡二叉樹的定義。
5、 哈希法的特點
6、 哈希函數和散列地址。
7、 構造哈希函數的幾種方法。直接定址法、除留余數法、平方取中法、折疊法、數字分析法。
8、 處理沖突的方法:開放定址法和鏈地址法。開放定址法又分為線性探測再散列、二次探測再散列和偽隨機探測再散列。
四、考核要求
1. 識記
1) 查找在數據處理中的重要性
2) 查找成功、不成功的含義
2. 簡單應用
1) 順序查找、折半查找、分塊查找的基本思想、演算法實現和查找效率分析
2) 順序查找中「監視哨」的作用
3) 比較線性表上三種查找方法的優缺點,能根據實際問題的要求和特點,選擇出 合適的查找方法
4) 二叉排序樹和二叉平衡樹的定義、特點
5) 二叉排序樹的插入、刪除、建樹和查找演算法及時間性能
6) 建立一棵二叉排序樹的過程就是對輸入序列的排序過程,輸入序列對所建立的二叉排序樹形態的影響
7) 哈希表、哈希函數、哈希地址(散列地址)、裝填因子等有關概念
8) 哈希函數的構造方法和解決沖突的方法
9) 哈希表和其它表的本質區別
第十章 內部排序
一、學習目的和要求
本章的目的是介紹五類內部排序方法的基本思想、排序過程、演算法實現、時間和空間性能的分析以及各種排序方法的比較和選擇。重點掌握快速排序、堆排序、歸並排序和基數排序的基本思想和排序過程。難點是這四類排序演算法的實現。
二、課程內容
第一節 概述
第二節 插入排序
第三節 快速排序
第四節 選擇排序
第五節 歸並排序
第六節 基數排序
第七節 各種內部排序方法的比較討論
三、 考核知識點
1、 排序的目的、分類和排序方法的穩定性的定義。
2、 插入排序:直接插入排序的演算法、折半插入排序的演算法、希爾排序的思想。
3、 選擇排序的思想
4、 堆排序的方法、堆的定義、初始堆的建立。
5、 起泡排序的思想。
6、 快速排序的演算法、快速排序的最壞情況時間復雜度的分析。
7、 歸並排序的思想。
8、 基數排序的思想及特點。
四、考核要求
1. 識記
1) 排序在數據處理中的重要性
2) 排序方法穩定性的含義
3) 排序方法的分類及演算法好壞的評判標准
2. 領會
1) 歸並排序的基本思想和演算法實現,以及時間性能分析
2) 針對給定的輸入序列,能寫出歸並排序的排序過程
3) 基數排序的基本思想
4) 分配排序和其它幾類排序方法的區別
3. 簡單應用
1) 堆、極小堆、極大堆、堆頂等有關概念和定義
2) 堆的性質及堆與完全二叉樹的關系
3) 直接選擇排序和堆排序的基本思想和演算法實現,以及時間性能分析
4) 針對給定的輸入序列,寫出堆排序的排序過程
5) 比較各種排序演算法的優缺點
6) 根據實際問題的特點和要求選擇合適的排序方法
4. 綜合應用
1) 直接插入排序的基本思想和演算法實現,以及在最好、最壞和平均情況下的時間性能分析
2) 直接插入排序中「監視哨」的作用
3) 針對給定的輸入序列,要能寫出直接插入排序的排序過程
4) 起泡排序的基本思想
5) 快速排序的基本思想和演算法實現,以及在最好、最壞和平均情況下的時間性能分析,了解演算法的穩定性
6) 樞軸元素的選擇對排序的影響
7) 針對給定的輸入序列,能寫出快速排序的排序過程
第十二章 文 件
一、學習目的和要求
本章的目的是介紹存儲在外存上的數據結構(文件)的有關概念、各種文件及其特點、組織方式及其查詢和更新操作,要求對這些內容做一般性的了解,本章不是重點。。
二、課程內容
第一節 有關文件的基本概念
第二節 順序文件
第三節 索引文件
第四節 ISAM文件和VSAM文件
第五節 直接存取文件
第六節 多關鍵字文件
三、考核知識點
9、 文件的基本概念
10、 常用的文件組織方式:順序文件、索引文件、散列文件和多關鍵字文件
11、 順序文件的特點及查找方法
12、 索引文件的組織方式
13、 索引順序文件常用的有兩種:ISAM文件和VSAM文件
14、 散列文件(直接存取文件)的特點及優點
15、 兩種多關鍵字文件的組織方法:多重表文件和倒排表
四、考核要求
1. 識記
1) 文件的基本概念
2) 常用的文件組織方式:順序文件、索引文件、散列文件和多關鍵字文件
3) 順序文件的特點及查找方法
4) 索引文件的組織方式
5) 索引順序文件常用的有兩種:ISAM文件和VSAM文件
6) 散列文件(直接存取文件)的特點及優點
7) 兩種多關鍵字文件的組織方法:多重表文件和倒排表

教材:《數據結構》(C語言版)嚴蔚敏 吳偉民 編著,清華大學出版社1996年版。

考題類型及分數分布:
本課程考試試題類型填空題、問答題、綜合應用題三種形式,其中填空題20分、問答題25分,綜合應用題30分。
這是2010考試的考綱,我想2011年考綱不會有太大的變化

❸ 數據結構--串

串的定義:串(string)是由零個或多個字元組成的有限序列,又名叫字元串。零個字元的串稱為空串(null string)。

還有一些特別的字元串:
空格串:只包含空格的串。
子串與主串,串中任意個數的連續字元組成的子序列稱為該串的子串,相應地,包含子串的串稱為主串。

串有兩種存儲結構,靜態和動態,靜態的存儲結構一般使用一組地址連續的存儲單元來存儲,例如數組。使用數組,就需要在初始分配一個固定長度的存儲區域,這樣就有可能使:兩串的連接、新串的插入、以及字元串的替換的操作,超過數組的長度。為了解決這個問題,可以動態分配串的存儲空間,使用鏈表結構(一般情況下,對串的操作基本上是從頭到尾順序掃描,因此無需使用雙向鏈表)。

常用的串有7種基本操作:
1.賦值,2.判等(串的比較是通過比較字元的ASCII來進行的),3.求長,4.鏈接,5.求字串,6.定位,7.置換

下面來說說在靜態存儲方式下,鏈接,求子串,求子串位置的操作

舉個例子:
主串S:a b a b c a b c a c b a b,子串T:a b c m c
當i=3,S[i]=b,當j=3,T[j]=m,發現子串與主串不相等了,這時不用從i=1,j=0從頭開始比較,根據此輪比較發現主串與子串0-2的字元是相等的,而且0-2的字元也不是重復的,所以T[0]也就無需在和S[1],S[2]進行比較了,i可以直接向右滑動到3,繼續同T進行比較,在整個匹配過程中,i的指針沒有回溯,減少了運行時間。

❹ C語言實現把一些字元串存儲到數組或其他數據結構中並輸出

sometype flag;
char str[100];
while(flag != 程序運行結束標志)
{
if(程序運行結果 == "apple")
//if里可能是字元串比較,也可能是相應的數字的比較,看具體情況改吧
{
strcat(str, "apple");
}
else if(程序運行結果 == "banana")
{
strcat(str, "banana");
}
......
}

C裡面好像沒有string類型,我也不知道怎麼表示字元串的數組,既然最終是用字元串輸出,就直接用一個字元串連接唄