久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

單鏈表實(shí)驗(yàn)報(bào)告

時(shí)間:2019-05-15 10:09:12下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《單鏈表實(shí)驗(yàn)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《單鏈表實(shí)驗(yàn)報(bào)告》。

第一篇:?jiǎn)捂湵韺?shí)驗(yàn)報(bào)告

《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告二

分校:

學(xué)號(hào):

日期:

班級(jí):

姓名:

程序名: L2311.CPP

一、上機(jī)實(shí)驗(yàn)的問題和要求:

單鏈表的查找、插入與刪除。設(shè)計(jì)算法,實(shí)現(xiàn)線性結(jié)構(gòu)上的單鏈表的產(chǎn)生以及元素的查找、插入與刪除。具體實(shí)現(xiàn)要求:

1.從鍵盤輸入20個(gè)整數(shù),產(chǎn)生帶表頭的單鏈表,并輸入結(jié)點(diǎn)值。

2.從鍵盤輸入1個(gè)整數(shù),在單鏈表中查找該結(jié)點(diǎn)。若找到,則顯示“找到了”;否則,則顯示“找不到”。

3.從鍵盤輸入2個(gè)整數(shù),一個(gè)表示欲插入的位置i,另一個(gè)表示欲插入的數(shù)值x,將x插入在對(duì)應(yīng)位置上,輸出單鏈表所有結(jié)點(diǎn)值,觀察輸出結(jié)果。4.從鍵盤輸入1個(gè)整數(shù),表示欲刪除結(jié)點(diǎn)的位置,輸出單鏈表所有結(jié)點(diǎn)值,觀察輸出結(jié)果。5.將單鏈表中值重復(fù)的結(jié)點(diǎn)刪除,使所得的結(jié)果表中個(gè)結(jié)點(diǎn)值均不相同,輸出單鏈表所有結(jié)點(diǎn)值,觀察輸出結(jié)果。

6.刪除其中所有數(shù)據(jù)值為偶數(shù)的結(jié)點(diǎn),輸出單鏈表所有結(jié)點(diǎn)值,觀察輸出結(jié)果。

7.把單鏈表變成帶表頭結(jié)點(diǎn)的循環(huán)鏈表,輸出循環(huán)單鏈表所有結(jié)點(diǎn)值,觀察輸出結(jié)果。8.(★)將單鏈表分解成兩個(gè)單鏈表A和B,使A鏈表中含有原鏈表中序號(hào)為奇數(shù)的元素,而B鏈表中含有原鏈表中序號(hào)為偶數(shù)的元素,且保持原來(lái)的相對(duì)順序,分別輸出單鏈表A和單鏈表B的所有結(jié)點(diǎn)值,觀察輸出結(jié)果。

二、程序設(shè)計(jì)的基本思想,原理和算法描述:

(包括程序的結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),輸入/輸出設(shè)計(jì),符號(hào)名說(shuō)明等)

三、源程序及注釋:

四、運(yùn)行輸出結(jié)果:

五、調(diào)試和運(yùn)行程序過程中產(chǎn)生的問題及采取的措施:

六、對(duì)算法的程序的討論、分析,改進(jìn)設(shè)想,其它經(jīng)驗(yàn)教訓(xùn):

七、對(duì)實(shí)驗(yàn)方式、組織、設(shè)備、題目的意見和建議:

第二篇:北郵數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告 單鏈表

北京郵電大學(xué) 數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告

實(shí)驗(yàn)名稱: 實(shí)驗(yàn)一

線性表 學(xué)生姓名:

級(jí):

班內(nèi)序號(hào):

學(xué)

號(hào):

期: 2014年1月3日

實(shí)驗(yàn)?zāi)康?/p>

? 熟悉C++語(yǔ)言的基本編程方法,掌握集成編譯環(huán)境的調(diào)試方法 ? 學(xué)習(xí)指針、模板類、異常處理的使用 ? 掌握線性表的操作的實(shí)現(xiàn)方法 ? 學(xué)習(xí)使用線性表解決實(shí)際問題的能力 實(shí)驗(yàn)內(nèi)容

2.1題目1 根據(jù)線性表的抽象數(shù)據(jù)類型的定義,選擇下面任一種鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表,并完成線性表的基本功能。

線性表存儲(chǔ)結(jié)構(gòu)(五選一):

1、帶頭結(jié)點(diǎn)的單鏈表

2、不帶頭結(jié)點(diǎn)的單鏈表

3、循環(huán)鏈表

4、雙鏈表

5、靜態(tài)鏈表

線性表的基本功能:

1、構(gòu)造:使用頭插法、尾插法兩種方法

2、插入:要求建立的鏈表按照關(guān)鍵字從小到大有序

3、刪除

4、查找

5、獲取鏈表長(zhǎng)度

6、銷毀

7、其他:可自行定義

編寫測(cè)試main()函數(shù)測(cè)試線性表的正確性。程序分析

3.1 存儲(chǔ)結(jié)構(gòu) 單鏈表的存儲(chǔ)結(jié)構(gòu):

3.2 關(guān)鍵算法分析

一、關(guān)鍵算法 1.頭插法

自然語(yǔ)言描述:a.在堆中建立新結(jié)點(diǎn)

b.將a[i]寫入到新結(jié)點(diǎn)的數(shù)據(jù)域

c.修改新結(jié)點(diǎn)的指針域

d.修改頭結(jié)點(diǎn)的指針域,將新結(jié)點(diǎn)加入鏈表中 代碼描述: template LinkList::LinkList(T a[], int n)//頭插法建立 {

front = new Node;front->next = NULL;for(int i=n-1;i>=0;i--){ Node* s = new Node;s->data = a[i];

}

} s->next = front->next;front->next = s;時(shí)間復(fù)雜度:O(n)

2.尾插法

自然語(yǔ)言描述:a.在堆中建立新結(jié)點(diǎn)

b.將a[i]寫入到新結(jié)點(diǎn)的數(shù)據(jù)域

c.將新結(jié)點(diǎn)加入到鏈表中

d.修改修改尾指針 代碼描述: template LinkList::LinkList(T a[], int n)//尾插法建立 {

front = new Node;front->next=NULL;Node * r = front;for(int i=0;i * s = new Node;

}

} s->data = a[i];s->next = r->next;r->next= s;r=s;時(shí)間復(fù)雜度:O(n)

3.析構(gòu)函數(shù)

自然語(yǔ)言描述:a.新建立一個(gè)指針,指向頭結(jié)點(diǎn)

b.移動(dòng)a中建立的指針

c.逐個(gè)釋放指針

代碼描述: template LinkList::~LinkList()//析構(gòu)函數(shù),銷毀鏈表 {

Node * p = front;while(p){ front = p;p = p->next;

} } delete front;4.按位查找函數(shù)

自然語(yǔ)言描述: a.初始化工作指針p和計(jì)數(shù)器j,p指向第一個(gè)結(jié)點(diǎn),j=1

b.循環(huán)以下操作,直到p為空或者j等于1

b1:p指向下一個(gè)結(jié)點(diǎn)

b2:j加1

c.若p為空,說(shuō)明第i個(gè)元素不存在,拋出異常

d.否則,說(shuō)明p指向的元素就是所查找的元素,返回元素地址

代碼描述: template Node* LinkList::Get(int i)//按位查找 {

Node * p = front;int j=0;while(p){

if(j

} else break;p = p->next;j++;

} if(!p)throw“查找位置非法”;else

return p;} 時(shí)間復(fù)雜度:O(n)

5.按值查找函數(shù)

自然語(yǔ)言描述:a.初始化工作指針p和計(jì)數(shù)器j,p指向第一個(gè)結(jié)點(diǎn),j=1

b.循環(huán)以下操作,找到這個(gè)元素或者p指向最后一個(gè)結(jié)點(diǎn)

b1.判斷p指向的結(jié)點(diǎn)是不是要查找的值,如果是,返回j;

b2.否則p指向下一個(gè)結(jié)點(diǎn),并且j的值加一

c.如果找到最后一個(gè)結(jié)點(diǎn)還沒有找到要查找的元素,返回查找失敗信息

代碼描述: template int LinkList::Locate(T x)//按值查找 {

Node * p = front->next;int j = 1;while(p){

} return-1;if(p->data == x)return j;else { p = p->next;

j++;} } 時(shí)間復(fù)雜度:O(n)6.插入函數(shù)

自然語(yǔ)言描述: a.在堆中建立新結(jié)點(diǎn)

b.將要插入的結(jié)點(diǎn)的數(shù)據(jù)寫入到新結(jié)點(diǎn)的數(shù)據(jù)域

c.修改新結(jié)點(diǎn)的指針域

d.修改前一個(gè)指針的指針域,使其指向新插入的結(jié)點(diǎn)的位置

代碼描述: template void LinkList::Insert(int i,T x)//插入函數(shù) {

Node * p = Get(i-1);if(p){

} else throw“插入位置非法”;Node * s = new Node;s->data = x;s->next = p->next;p->next = s;} 時(shí)間復(fù)雜度:O(n)7.按位刪除函數(shù)

自然語(yǔ)言描述:a.從第一個(gè)結(jié)點(diǎn)開始,查找要?jiǎng)h除的位數(shù)i前一個(gè)位置i-1的結(jié)點(diǎn)

b.設(shè)q指向第i個(gè)元素

c.將q元素從鏈表中刪除

d.保存q元素的數(shù)據(jù)

e.釋放q元素 代碼描述: template T LinkList::Delete(int i)//刪除函數(shù) { Node *p = Get(i-1);Node *q = p->next;

T x=q->data;

} p->next = q->next;delete q;return x;

8.遍歷打印函數(shù)

自然語(yǔ)言描述: a.判斷該鏈表是否為空鏈表,如果是,報(bào)錯(cuò)

b.如果不是空鏈表,新建立一個(gè)temp指針

c.將temp指針指向頭結(jié)點(diǎn)

d.打印temp指針的data域

e.逐個(gè)往后移動(dòng)temp指針,直到temp指針的指向的指針的next域?yàn)榭?/p>

代碼描述: template void LinkList::PrintList()//打印鏈表 {

} Node * p = front->next;while(p){

} cout<data<<' ';p = p->next;9.獲取鏈表長(zhǎng)度函數(shù)

自然語(yǔ)言描述: a.判斷該鏈表是否為空鏈表,如果是,輸出長(zhǎng)度0

b.如果不是空鏈表,新建立一個(gè)temp指針,初始化整形數(shù)n為0

c.將temp指針指向頭結(jié)點(diǎn)

d.判斷temp指針指向的結(jié)點(diǎn)的next域是否為空,如果不是,n加一,否則return n

e.使temp指針逐個(gè)后移,重復(fù)d操作,直到temp指針指向的結(jié)點(diǎn)的next域?yàn)?,返回n 代碼描述: template int LinkList::GetLength()//分析鏈表長(zhǎng)度 {

} Node * p = front;int i=0;while(p){

} return i-1;p = p->next;i++;4 程序運(yùn)行結(jié)果

4.1主函數(shù)流程圖

4.2程序運(yùn)行框圖

實(shí)驗(yàn)心得

1.調(diào)試時(shí)出現(xiàn)的問題及解決的方法

在編寫按值查找函數(shù)時(shí),由于沒有處理好指針類型的原因,導(dǎo)致指針無(wú)法正常返回,屢屢報(bào)錯(cuò)。最后意識(shí)到c++沒有指針強(qiáng)制類型的轉(zhuǎn)換機(jī)制,經(jīng)過細(xì)致檢查后才改正錯(cuò)誤使得程序正常運(yùn)行。2.心得體會(huì)

了解了單鏈表的基本的操作函數(shù)實(shí)現(xiàn),對(duì)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)有了較好的認(rèn)識(shí) 3.下一步的改進(jìn)

可以增加完善報(bào)錯(cuò)機(jī)制,增強(qiáng)程序的健壯性

完整源代碼

#include using namespace std;

template struct Node {

};

template class LinkList { public:

};

//template //LinkList::LinkList(T a[], int n)//頭插法建立 LinkList(){ front = new Node;front->next = NULL;}//無(wú)參構(gòu)造函數(shù) LinkList(T a[],int n);//構(gòu)造函數(shù) void Insert(int i,T x);//插入函數(shù) T Delete(int i);//刪除函數(shù)

Node* Get(int i);//查找第幾個(gè)的元素,返回的是該元素的地址 int Locate(T x);//定位某元素 int GetLength();//分析鏈表長(zhǎng)度 ~LinkList();//析構(gòu)函數(shù) void PrintList();//打印鏈表 Node * front;T data;Node * next;private: //{ // // // // // // // // // //}

template LinkList::LinkList(T a[], int n)//尾插法建立 {

}

template LinkList::~LinkList()//析構(gòu)函數(shù),銷毀鏈表 {

}

template void LinkList::PrintList()//打印鏈表 { Node * p = front;while(p){

} front = p;p = p->next;delete front;front = new Node;front->next=NULL;Node * r = front;for(int i=0;i

} Node * s = new Node;s->data = a[i];s->next = r->next;r->next= s;r=s;front = new Node;front->next = NULL;for(int i=n-1;i>=0;i--){

} Node* s = new Node;s->data = a[i];s->next = front->next;front->next = s;

} Node * p = front->next;while(p){

} cout<data<<' ';p = p->next;

template Node* LinkList::Get(int i)//按位查找 {

}

template int LinkList::Locate(T x)//按值查找 {

} Node * p = front->next;int j = 1;while(p){

} return-1;if(p->data == x)return j;else

{ } p = p->next;

j++;Node * p = front;int j=0;while(p){

} if(!p)throw“查找位置非法”;else

return p;if(j

} else break;p = p->next;j++;

template void LinkList::Insert(int i,T x)//插入函數(shù) {

}

template T LinkList::Delete(int i)//刪除函數(shù) {

}

template int LinkList::GetLength()//分析鏈表長(zhǎng)度 {

}

void main(){ Node * p = front;int i=0;while(p){

} return i-1;p = p->next;i++;Node *p = Get(i-1);Node *q = p->next;p->next = q->next;delete q;return x;Node * p = Get(i-1);if(p){

} else throw“插入位置非法”;Node * s = new Node;s->data = x;s->next = p->next;p->next = s;

T x=q->data;

} int n;cout<<“將要輸入的鏈表長(zhǎng)度為:”;cin>>n;int *b=new int[n];cout<<“輸入鏈表中的元素:”;for(int k=0;k>b[k];LinkList a(b,n);a.PrintList();cout<<“鏈表的長(zhǎng)度:”<>i;cout<<“被刪除掉的元素是:”<>j;cout<<“要將其插入在哪個(gè)位置:”;cin>>i;a.Insert(i,j);cout<<“插入后得到的鏈表是:”;a.PrintList();cout<<“要查找第幾個(gè)元素:”;cin>>i;cout<<“要查找的元素為:”<data<>j;cout<<“輸入的元素位置在:”<

第三篇:2012《數(shù)據(jù)結(jié)構(gòu)》上機(jī)實(shí)驗(yàn)報(bào)告 鏈表

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

西華數(shù)學(xué)與計(jì)算機(jī)學(xué)院上機(jī)實(shí)踐報(bào)告

課程名稱:數(shù)據(jù)結(jié)構(gòu) 指導(dǎo)教師:唐劍梅 上機(jī)實(shí)踐名稱:

上機(jī)實(shí)踐編號(hào):1 年級(jí): 2011 姓名:蔣俊 學(xué)

號(hào)

***

上機(jī)實(shí)踐成績(jī):

上機(jī)實(shí)踐日期:2012-11-6

上機(jī)實(shí)踐時(shí)間:8:00-9:30

一、實(shí)驗(yàn)?zāi)康?/p>

1.了解線性表的邏輯結(jié)構(gòu)特性,以及這種特性在計(jì)算機(jī)內(nèi)的兩種存儲(chǔ)結(jié)構(gòu)。

2.重點(diǎn)是線性表的基本操作在兩種存儲(chǔ)結(jié)構(gòu)上的實(shí)現(xiàn);其中以鏈表的操作為側(cè)重點(diǎn);并進(jìn)一步學(xué)習(xí)程序設(shè)計(jì)方法。

3.掌握棧這種數(shù)據(jù)結(jié)構(gòu)特性及其主要存儲(chǔ)結(jié)構(gòu),并能在現(xiàn)實(shí)生活中靈活運(yùn)用。

4.掌握隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)特性及其主要存儲(chǔ)結(jié)構(gòu),并能在現(xiàn)實(shí)生活中靈活運(yùn)用。

5.了解和掌握遞歸程序設(shè)計(jì)的基本原理和方法。

6.掌握使用 C++面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)源程序的方法。

二、實(shí)驗(yàn)內(nèi)容

1.熟悉前面的【程序示例2】,按照約瑟夫問題的方法2,試著不設(shè)頭結(jié)點(diǎn)改寫原來(lái)的程序,上機(jī)調(diào)試運(yùn)行。

2.用鏈表建立通訊錄。通訊錄內(nèi)容有:姓名、通訊地址、電話號(hào)碼。

要求:(1)通訊錄按姓名項(xiàng)的字母順序排列;

(2)能查找通訊錄中某人的信息;

[提示] 用鏈表來(lái)存放這個(gè)通訊錄,一個(gè)人的信息作為一個(gè)結(jié)點(diǎn)。成鏈的過程可以這樣考慮:先把頭結(jié)點(diǎn)后面的

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

char name[20];

// 姓名子域

NodeType *next;

// 指針域

};class Jose

//類聲明

{ private: NodeType *Head;

public:

Jose(){};

~Jose(){ };

void creat();

void outs();

};void Jose::creat(){ int i=0, n;

NodeType *newp, *pre;

cout<<“n

輸入總?cè)藬?shù) n=”;cin>>n;

pre=new NodeType;

Head=new NodeType;

pre->num=1;

cout<<“n 編號(hào)”<<1<<“的人

姓名=”;

cin>>pre->name;

cout<<“n 密碼”<<1<<“的人

密碼=”;

cin>>pre->psw;

Head=pre;

Head->next=Head;

for(i=1;i

{ newp=new NodeType;

newp->num=i+1;

cout<<“n 編號(hào)”<

姓名=”;cin>>newp->name;

cout<<“n 密碼”<

密碼=”;

cin>>newp->psw;

newp->next=Head;

pre->next=newp;

pre=newp;

} }

void Jose::outs()

{ int m,i;

NodeType *q=Head, *p;

cout<<“n 輸入m值(m>=2)”;cin>>m;

cout<<“n

根據(jù)m值,開始報(bào)數(shù)輸出:”<

while(q->next!=q)

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

{ for(i=1;inext;}

cout<<“編號(hào)為:”<num<<“ 的人的姓名:”<name<

cout<<“n 編號(hào)為:”<num<<“的人的密碼:”<psw<

m=q->psw;

p->next=q->next;delete q;

q=p->next;

}

cout<<“編號(hào)為:”<num<<“的人的姓名:”<name<

cout<<“n 編號(hào)為:”<num<<“的人的密碼:”<psw<

delete q;}

int main()

{

Jose h;

h.creat();

h.outs();

return 0;}

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

{ char Add[20];

char name[20];

char tel[20];

};struct NodeType {

ElemType data;

NodeType *next;};class Sqlist

{ private:

NodeType *Head;

public:

Sqlist();

~Sqlist();

void creat();

void Insert(ElemType x);

void Delet(ElemType x);

void PrintOut();

};Sqlist::Sqlist(){

Head=new NodeType;Head->next=NULL;strcpy(Head->data.name,“姓名”);strcpy(Head->data.Add,“地址”);strcpy(Head->data.tel,“電話號(hào)碼”);} Sqlist::~Sqlist(){

NodeType *p=Head->next;

while(p!=NULL)

{Head->next=p->next;

delete p;

p=Head->next;} } void Sqlist::creat()

//初步建立一個(gè)通訊錄

{ NodeType*p,*s,*q;ElemType x;

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

int a;q=Head;cout<<“n 輸入姓名:”;cin>>x.name;cout<<“n 輸入通訊地址:”;cin>>x.Add;cout<<“n 輸入電話號(hào)碼:”;cin>>x.tel;p=new NodeType;p->data=x;Head->next=p;p->next=NULL;cout<<“輸入一個(gè)數(shù)。若為-1,結(jié)束輸入:”<>a;

while(a!=-1){ cout<<“n 輸入姓名:”;cin>>x.name;cout<<“n 輸入通訊地址:”;cin>>x.Add;cout<<“n 輸入電話號(hào)碼:=”;cin>>x.tel;s=new NodeType;s->data=x;if(strcmp(s->data.name,p->data.name)>0){ p->next=s;s->next=NULL;

p=s;} else{ s->next=p;q->next=s;} q=q->next;

cout<<“輸入一個(gè)數(shù)。若為-1,結(jié)束輸入:”<>a;} } void Sqlist::Insert(ElemType x)//插入 { NodeType *p,*q,*s;s=new NodeType;

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

s->data=x;q=Head;p=q->next;while(p!=NULL&&strcmp(p->data.name,x.name)<0){q=p;p=p->next;} s->next=p;q->next=s;} void Sqlist::Delet(ElemType x)//刪除 { NodeType *p,*q;q=Head;p=Head->next;while(p!=NULL&&strcmp(p->data.name,x.name)!=0){q=p;p=p->next;} if(p!=NULL){ q->next=p->next;delete p;cout<<“刪除結(jié)點(diǎn)成功”<

{ NodeType *p;p=Head->next;while(p!=NULL){ cout<

data.name<<“ ”;cout<

data.tel<<“ ”;cout<

data.Add<<“ ”;p=p->next;} cout<

Sqlist as;

cout<<“n

通訊錄演示”;

do{

cout<<“nn”;

cout<<“nn

1.初步建立一個(gè)通訊錄(單鏈表)

”;

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

cout<<“nn

2.插入新的電話記錄 ”;

cout<<“nn

3.刪除一個(gè)電話記錄”;

cout<<“nn

4.結(jié)束程序”;

cout<<“n******************************** ”;

cout<<“n

請(qǐng)輸入你的選擇(1,2,3,4)”;cin>>k;switch(k){ case 1:{ as.creat();as.PrintOut();}break;

case 2:{

cout<<“n 插入的數(shù)據(jù) 姓名”;cin>>e.name;

cout<<“n 插入的數(shù)據(jù) 電話號(hào)”;cin>>e.tel;

cout<<“n 插入的數(shù)據(jù) 地址”;cin>>e.Add;

as.Insert(e);as.PrintOut();

}break;

case 3:{

cout<<“n 被刪除的姓名= ”;

cin>>e.name;

as.Delet(e);

as.PrintOut();

}break;

default:break;

}

}while(k>=1&&k<4);

cout<<“n

再見!”;

return 0;}

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

const int MAXSIZE=100;

// 數(shù)組的容量 class SqStack

{ private:

ElemType elem[MAXSIZE];

int top;

public:

SqStack();

~SqStack(){};

void SqStack::push(ElemType e);

ElemType SqStack::pop();

void SqStack::PrintOut();

int SqStack::IsEmpty();

void f(ElemType N,ElemType M);};void SqStack::f(ElemType N,ElemType M){ SqStack s;

ElemType e;while(N){

s.push(N%M);

N=N/M;} while(!s.IsEmpty()){

e=s.pop();

if(e>=10)

{

e=e%10;

switch(e)

{

case 1:cout<<“b”<

case 2:cout<<“c”<

case 3:cout<<“d”<

case 4:cout<<“e”<

case 5:cout<<“f”<

default:cout<<“a”<

}

} else

cout<

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

} cout<

{cout<<“棧滿溢出”<

return;

}

else{top++;

elem[top]=e;} } ElemType SqStack::pop(){ElemType x;

if(top==0)

{ cout<< “ 棧為空,不能出棧操作”<

else { x=elem[top];

top--;

return x;} } void SqStack::PrintOut()

{int k;

cout<<“n PrintOut Data:n”;

for(k=top;k>=1;k--)cout<

cout<

else return 0;} void main(){ ElemType a,m;cout<<“請(qǐng)輸入一個(gè)正整數(shù):”<>a;cout<<“請(qǐng)輸入要轉(zhuǎn)換的進(jìn)制:”<>m;SqStack as;as.f(a,m);}

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

五、總結(jié)

通過本次實(shí)驗(yàn),我熟悉了鏈表的操作,了解了線性表在現(xiàn)實(shí)生活中的運(yùn)用,認(rèn)識(shí)了順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)這兩種結(jié)構(gòu)。本次上機(jī)實(shí)踐基本完成了實(shí)驗(yàn)內(nèi)容,但完成的不是很好,以后需要更加努力地掌握基本的知識(shí)。實(shí)驗(yàn)內(nèi)容對(duì)于隊(duì)列的運(yùn)用沒有涉及,希望以后有所涉及。

西華大學(xué)數(shù)計(jì)學(xué)院學(xué)生上機(jī)實(shí)踐報(bào)告

第四篇:實(shí)驗(yàn)四 單鏈表及其應(yīng)用(參考程序)

實(shí)驗(yàn)四 單鏈表的建立

一、實(shí)驗(yàn)?zāi)康?/p>

1.掌握線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)——單鏈表的定義及C語(yǔ)言實(shí)現(xiàn)。2.掌握線性表在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)——單鏈表中的各種基本操作。

二、實(shí)驗(yàn)內(nèi)容

1.建立一個(gè)帶頭結(jié)點(diǎn)的單鏈表,結(jié)點(diǎn)的值域?yàn)檎蛿?shù)據(jù)。要求將用戶輸入的數(shù)據(jù)分別按尾插入法和頭插法來(lái)建立相應(yīng)單鏈表?!局R(shí)要點(diǎn)】

為了便于實(shí)現(xiàn)各種運(yùn)算,通常在單鏈表的第一個(gè)結(jié)點(diǎn)前增設(shè)一個(gè)附加結(jié)點(diǎn),稱為頭結(jié)點(diǎn),它的結(jié)構(gòu)與表結(jié)點(diǎn)相同,其數(shù)據(jù)域可不存儲(chǔ)信息,也可存儲(chǔ)表長(zhǎng)等附加信息,具體如下圖。

【實(shí)驗(yàn)提示】

單鏈表的結(jié)點(diǎn)結(jié)構(gòu)除數(shù)據(jù)域外,還含有一個(gè)指針域。用C語(yǔ)言描述結(jié)點(diǎn)結(jié)構(gòu)如下:

typedef int datatype;

/* 線性表中存放整型元素 */ typedef struct LNode

/ * 結(jié)點(diǎn)類型定義 * /

{

datatype data;

/ * 數(shù)據(jù)域 * /

struct node *next;

/ * 指針域 * / }Linklist;

/* Linklist為單鏈表類型*/

注意結(jié)點(diǎn)的建立方法及構(gòu)造新結(jié)點(diǎn)時(shí)指針的變化。構(gòu)造一個(gè)結(jié)點(diǎn)需用到C語(yǔ)言的標(biāo)準(zhǔn)函數(shù)malloc(),如給指針變量p分配一個(gè)結(jié)點(diǎn)的地址:

p=(strcut LNode *)malloc(sizeof(Linklist));該語(yǔ)句的功能是申請(qǐng)分配一個(gè)類型為L(zhǎng)inklist的結(jié)點(diǎn)的地址空間,并將首地址存入指針變量p中(或p=new(struct LNode);即生成新結(jié)點(diǎn))。當(dāng)結(jié)點(diǎn)不需要時(shí)可以用標(biāo)準(zhǔn)函數(shù)free(p)釋放結(jié)點(diǎn)存儲(chǔ)空間,這時(shí)p為空值(NULL)。【程序提示】

#include typedef struct LNode{

//補(bǔ)充實(shí)現(xiàn)表節(jié)點(diǎn)類型的定義; } Linklist;

Linklist * creatlist(){ int x;Linklist *head, *p;// head為單鏈表的頭指針,p指向新建的結(jié)點(diǎn)

//補(bǔ)充實(shí)現(xiàn)單鏈表的建立;

return(head);

// 函數(shù)返回鏈表頭指針head }

void output(Linklist *HeadL){ if(HeadL->next==NULL)printf(“空鏈表!n”);else { printf(“鏈表為:n”);Linklist *P;P=HeadL->next;while(P!=NULL){

printf(“%d->”,P->data);P=P->next;} printf(“n”);}

}

void main(void){ Linklist *List;List=creatlist();output(List);} 【參考程序】

1、尾插法

#include typedef struct LNode{ int data;struct LNode *next;} Linklist;

Linklist * creatlist(){ int x;

Linklist *head, *p,*r;/* head為頭指針 */

head=new(struct LNode);

head->data=0;

/* 表頭結(jié)點(diǎn)數(shù)據(jù)域賦值 */

r=head;

/* 尾指針的初值為頭結(jié)點(diǎn)head */

printf(“請(qǐng)隨機(jī)輸入互不相同的正整數(shù)以0作為結(jié)束符:n”);

scanf(“%d”, &x);

/* 讀入第一個(gè)結(jié)點(diǎn)的值 */

while(x!=0)

/* 輸入數(shù)據(jù),以0為結(jié)束符 */ { p=new(struct LNode);/* 生成新結(jié)點(diǎn) */

p->data=x;

/* 給新結(jié)點(diǎn)的數(shù)據(jù)域賦值 */

r->next=p;

/* 新結(jié)點(diǎn)插入到表尾*rear之后 */

r=p;

/* 將尾指針rear指向新的尾結(jié)點(diǎn) */

head->data++;

/* 鏈表長(zhǎng)度計(jì)數(shù) */

scanf(“%d”, &x);

/* 輸入下一個(gè)結(jié)點(diǎn)的數(shù)據(jù) */

}

r->next=NULL;

/* 將鏈表最后一個(gè)結(jié)點(diǎn)rear指針域置空 */

return(head);/* 函數(shù)返回鏈表頭指針head */ }

void output(Linklist *HeadL){

if(HeadL->next==NULL)printf(“空鏈表!n”);else {

printf(“鏈表為:n”);

Linklist *P;

P=HeadL->next;

while(P!=NULL)

{

printf(“%d->”,P->data);

P=P->next;

}

printf(“n”);}

} void main(void){

Linklist *List;List=creatlist();output(List);}

2、頭插法

#include typedef struct LNode{ int data;struct LNode *next;} Linklist;

Linklist * creatlist(){ int x;

Linklist *head, *p;/* head為頭指針 */

head=new(struct LNode);

head->data=0;

/* 表頭結(jié)點(diǎn)數(shù)據(jù)域賦值 */

head->next=NULL;

printf(“n請(qǐng)隨機(jī)輸入一組正整數(shù)以0結(jié)束輸入:n”);

scanf(“%d”,&x);

/* 輸入第一個(gè)結(jié)點(diǎn)數(shù)據(jù)值 */

while(x!=0)

/* 輸入數(shù)據(jù),以0為結(jié)束符 */

{ p=new(struct LNode);/* 生成新結(jié)點(diǎn) */

p->data=x;/* 給新結(jié)點(diǎn)的數(shù)據(jù)域賦值 */

p->next=head->next;

/* 將新結(jié)點(diǎn)插入表頭結(jié)點(diǎn)head之后 */

head->next=p;

head->data++;

/* 鏈表長(zhǎng)度計(jì)數(shù) */

scanf(“%d”,&x);

/* 輸入下一個(gè)結(jié)點(diǎn)的值 */

}

return(head);/* 函數(shù)返回鏈表頭指針head */ }

void output(Linklist *HeadL){

} void main(void){

Linklist *List;List=creatlist();output(List);}

方法二 void main(void){

} 2.在第一題的基礎(chǔ)上,增加單鏈表的查找,插入,刪除子程序。#include #include“stdlib.h”

typedef struct LNode{ int data;struct LNode *next;Linklist *head,*p;head=creatlist();printf(“output the list:n”);p=head->next;while(p){ } printf(“%d ”,p->data);p=p->next;} Linklist;

Linklist * creatlist(){ int x;

Linklist *head, *p;

/* head為頭指針 */

head=new(struct LNode);

head->data=0;

/* 表頭結(jié)點(diǎn)數(shù)據(jù)域賦值 */

head->next=NULL;

cout<<“n請(qǐng)隨機(jī)輸入一組正整數(shù)以0結(jié)束輸入:n”;

cin>>x;/* 輸入第一個(gè)結(jié)點(diǎn)數(shù)據(jù)值 */

while(x!=0)

/* 輸入數(shù)據(jù),以0為結(jié)束符 */

{ p=new(struct LNode);/* 生成新結(jié)點(diǎn) */

p->data=x;/* 給新結(jié)點(diǎn)的數(shù)據(jù)域賦值 */

p->next=head->next;

/* 將新結(jié)點(diǎn)插入表頭結(jié)點(diǎn)head之后 */

head->next=p;

head->data++;

/* 鏈表長(zhǎng)度計(jì)數(shù) */

cin>>x;

}

return(head);} void output(Linklist *HeadL){

if(HeadL->next==NULL)cout<<“空鏈表!n”;else {

cout<<“鏈表為:n”;

Linklist *P;

P=HeadL->next;

while(P!=NULL)

{

cout<

data<<“->”;/* 函數(shù)返回鏈表頭指針head */ /* 輸入下一個(gè)結(jié)點(diǎn)的值 */

P=P->next;

}

cout<<“n”;} } Linklist *no_search(Linklist *head, int i){

Linklist *p;int j;

p=head->next;

j=1;

/* 從首結(jié)點(diǎn)開始掃描 */

while((p!=NULL)&&(j

{ p=p->next;

/* 掃描下一個(gè)結(jié)點(diǎn) */

j++;

}

if(i==j)return(p);

else return(NULL);

/* 若找不到,則返回空指針 */ } Linklist *data_insert(Linklist *head, Linklist *p, int x){

Linklist *s;

s =new(struct LNode);/* 建立新結(jié)點(diǎn) */

s->data=x;

/* 將x值賦給s→data */

/* 統(tǒng)計(jì)已掃描結(jié)點(diǎn)的個(gè)數(shù) */

s->next=p->next;/* 新結(jié)點(diǎn)s后繼指向原p結(jié)點(diǎn)后繼 */

p->next=s;

/* p結(jié)點(diǎn)的后繼指向新結(jié)點(diǎn)s */

return(head);

/* 返回帶頭結(jié)點(diǎn)的單鏈表頭指針*/ } Linklist *key_delete(Linklist *head, int x){

Linklist *p, *q;

/* p是被刪除結(jié)點(diǎn),q是p的前驅(qū)結(jié)點(diǎn) */

p=head;

while((p!=NULL)&&(p->data!=x))

{

q=p;

p=p->next;

}

if(p!=NULL)

{

q->next=p->next;

/* 修改p前驅(qū)結(jié)點(diǎn)q指針域 */

/* 釋放結(jié)點(diǎn)空間 */

/* 若該結(jié)點(diǎn)存在,則刪除之 */

free(p);

return(head);

}

/* 函數(shù)返回鏈表頭指針*/

else

{

cout<<“要?jiǎng)h的結(jié)點(diǎn)不存在,請(qǐng)重輸數(shù)據(jù)!n”;

return(NULL);

} }

void main(void){

Linklist *List,*chazhao;List=creatlist();output(List);chazhao=no_search(List,2);//查找第二個(gè)節(jié)點(diǎn),并輸出數(shù)據(jù)域信息 cout<<“n查找第二個(gè)節(jié)點(diǎn),數(shù)據(jù)域信息為:n”;cout<data;List=data_insert(List,chazhao,50);//在第二個(gè)節(jié)點(diǎn)后插入數(shù)據(jù)為50的節(jié)點(diǎn) cout<<“n在第二個(gè)節(jié)點(diǎn)后插入數(shù)據(jù)為50的節(jié)點(diǎn):n”;

output(List);List=key_delete(List,50);//刪除數(shù)據(jù)為50的節(jié)點(diǎn) cout<<“n刪除數(shù)據(jù)為50的節(jié)點(diǎn):n”;

output(List);}

第五篇:WEB程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告-15單

實(shí)驗(yàn)

四、ASP.NET編程

實(shí)驗(yàn)序號(hào):4 實(shí)驗(yàn)名稱:ASP.NET編程 適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)/軟件工程 學(xué)時(shí)數(shù): 8學(xué)時(shí)

一、實(shí)驗(yàn)?zāi)康?/p>

1、熟悉ASP.NET服務(wù)器控件的使用。

2、學(xué)會(huì)使用ASP.NET服務(wù)器控件設(shè)計(jì)Web頁(yè)面。

3、學(xué)會(huì)使用ASP.NET對(duì)象。

二、實(shí)驗(yàn)設(shè)備

裝有WEB程序設(shè)計(jì)相關(guān)軟件。

1、使用ASP.NET控件,如TextBox、Label、Button等,并結(jié)合CSS、Javascript,實(shí)現(xiàn)登錄頁(yè)面的實(shí)現(xiàn)。要求點(diǎn)擊登錄按鈕時(shí),彈出提示:您輸入的用戶名是:**,密碼是:**,*為顯示輸入的用戶名和密碼,同時(shí)將用戶名和密碼寫入session,并跳轉(zhuǎn)到下面第2題頁(yè)面。

<%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“l(fā)ogin.aspx.cs”

Inherits=“WebApplication2.login” %>

style=“margin-bottom: 0px” Text=“用??戶?ì名?”>

style=“margin-left: 9px”>





style=“margin-left: 39px”>

三、實(shí)驗(yàn)步驟



下載單鏈表實(shí)驗(yàn)報(bào)告word格式文檔
下載單鏈表實(shí)驗(yàn)報(bào)告.doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

主站蜘蛛池模板: 丝袜老师办公室里做好紧好爽| 亚洲男女羞羞无遮挡久久丫| 伊人久久大线影院首页| 国产精品高潮呻吟av久久黄| 亚洲国产精品无码专区在线观看| 国产精品久久国产精品99| 视频二区精品中文字幕| 五十路熟妇无码专区| 国产成人无码a区精油按摩| 中文天堂资源在线www| 性色做爰片在线观看ww| 少妇白浆高潮无码免费区| 亚洲中文字幕永久在线不卡| 亚洲精品久久一区二区三区777| 国产免费又爽又色又粗视频| 国产专区国产av| 精品亚洲成a人在线观看青青| 国产v亚洲v天堂a无码| 18禁黄网站男男禁片免费观看| 久久久久久综合岛国免费观看| 亚洲精品成人无码中文毛片不卡| 18禁美女裸体无遮挡网站| 狠狠噜天天噜日日噜av| 99精品国产一区二区电影| 欧美无人区码suv| 无线乱码一二三区免费看| 精品亚洲成a人在线观看青青| 午夜福利1000集在线观看| 无码av免费毛片一区二区| 国内精品国产三级国产av| 夜夜躁日日躁狠狠久久av| 国产精品国产三级在线专区| 狠狠婷婷色五月中文字幕| 日本饥渴人妻欲求不满| 香蕉eeww99国产精选免费| 亚洲精品国产美女久久久99| av天堂亚洲区无码先锋影音| 国产成人高清亚洲明星一区| 免费无码毛片一区二区三区a片| 亚洲小说区图片区另类春色| 国产成人愉拍精品|