又大又粗又硬又爽又黄毛片,国产精品亚洲第一区在线观看,国产男同GAYA片大全,一二三四视频社区5在线高清

當(dāng)前位置:網(wǎng)站首頁(yè) >> 作文 >> 2023年數(shù)據(jù)結(jié)構(gòu)與算法課程心得體會(huì)(三篇)

2023年數(shù)據(jù)結(jié)構(gòu)與算法課程心得體會(huì)(三篇)

格式:DOC 上傳日期:2023-06-08 22:37:06
2023年數(shù)據(jù)結(jié)構(gòu)與算法課程心得體會(huì)(三篇)
時(shí)間:2023-06-08 22:37:06     小編:zdfb

當(dāng)在某些事情上我們有很深的體會(huì)時(shí),就很有必要寫一篇心得體會(huì),通過(guò)寫心得體會(huì),可以幫助我們總結(jié)積累經(jīng)驗(yàn)。我們?nèi)绾尾拍軐懙靡黄獌?yōu)質(zhì)的心得體會(huì)呢?以下是我?guī)痛蠹艺淼淖钚滦牡皿w會(huì)范文大全,希望能夠幫助到大家,我們一起來(lái)看一看吧。

數(shù)據(jù)結(jié)構(gòu)與算法課程心得體會(huì)篇一

學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)

課程名稱:

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

所屬院部:計(jì)算機(jī)工程學(xué)院

(理工類)

算法與數(shù)據(jù)結(jié)構(gòu) 專業(yè)班級(jí): 計(jì)算機(jī)統(tǒng)招(1)班

1413101006 學(xué)生姓名: 邢亦波

指導(dǎo)教師: 徐永華 15 ——20 16 學(xué)年 第 2 學(xué)期

金陵科技學(xué)院教務(wù)處制

實(shí)驗(yàn)報(bào)告書寫要求

實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,要遵照以下字體、字號(hào)、間距等的具體要求。紙張一律采用a4的紙張。

實(shí)驗(yàn)報(bào)告書寫說(shuō)明

實(shí)驗(yàn)報(bào)告中一至四項(xiàng)內(nèi)容為必填項(xiàng),包括實(shí)驗(yàn)?zāi)康暮鸵?;?shí)驗(yàn)儀器和設(shè)備;實(shí)驗(yàn)內(nèi)容與過(guò)程;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。

填寫注意事項(xiàng)

(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說(shuō)明,層次清晰。

(3)盡量采用專用術(shù)語(yǔ)來(lái)說(shuō)明事物。

(4)外文、符號(hào)、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。

實(shí)驗(yàn)報(bào)告批改說(shuō)明

實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用百分制,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定。

實(shí)驗(yàn)報(bào)告裝訂要求

實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號(hào)升序排列,裝訂成冊(cè),并附上一份該門課程的實(shí)驗(yàn)大綱。

實(shí)驗(yàn)項(xiàng)目名稱: 順序表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 無(wú) 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 04.05 實(shí)驗(yàn)成績(jī): 批改教師: 徐永華 批改時(shí)間:

實(shí)驗(yàn)1 順序表

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

掌握順序表的定位、插入、刪除等操作。

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

turbo c 2.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)編寫程序建立一個(gè)順序表,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值。編寫主函數(shù)測(cè)試結(jié)果。

(2)編寫順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x。如果存在,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)(序號(hào)從0開(kāi)始編號(hào));如果不存在,返回-1。編寫主函數(shù)測(cè)試結(jié)果。(3)在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,保持順序表的有序性。

解題思路:首先查找插入的位置,再移位,最后進(jìn)行插入操作;從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置;然后將從表尾開(kāi)始依次將元素后移一個(gè)位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置。

(4)刪除順序表中所有等于x的數(shù)據(jù)元素。

2、選做題

(5)已知兩個(gè)順序表a和b按元素值遞增有序排列,要求寫一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。

程序清單: 1.(1)

#include

#define maxsize 100 #define datatype int typedef struct shun { datatype a[maxsize];int length;}shun;shun s;void init(shun *s){ } void setup(shun *s){

} void display(shun *s){

} main()int i;if(s->length==0)printf(“沒(méi)有數(shù)據(jù)n”);else for(i=0;i

length;i++){ } printf(“%-5d”,s->a[i]);int i,j;printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);while(s->length>=maxsize){ printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);} for(i=0;i

length;i++){ } scanf(“%d”,&s->a[i]);s->length=0;printf(“溢出n”);

{

} init(&s);setup(&s);display(&s);

1.(2)

#include

#define maxsize 100 #define datatype int typedef struct shun { datatype a[maxsize];int length;}shun;shun s;void init(shun *s){ } void setup(shun *s){

} int find(shun *s,int x){ int i;for(i=0;i

length;i++){ int i,j;printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);while(s->length>=maxsize){ printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);} for(i=0;i

length;i++){ } scanf(“%d”,&s->a[i]);s->length=0;printf(“溢出n”);

if(s->a[i]==x)return i;} return 0;} void display(shun *s){

} main(){

} int x;init(&s);setup(&s);display(&s);printf(“輸入xn”);scanf(“%d”,&x);if(find(&s,x))printf(“找到位置是%dn”, find(&s,x));printf(“-1n”);else int i;if(s->length==0)printf(“沒(méi)有數(shù)據(jù)n”);else for(i=0;i

length;i++){ } printf(“%-5d”,s->a[i]);

1.(3)#include

#define maxsize 100 #define datatype int typedef struct shun { datatype a[maxsize];int length;}shun;shun s;void init(shun *s){ s->length=0;

} void setup(shun *s){

} void insert(shun *s,int x){ int i,j;if((s->length+1)>=maxsize){ printf(“溢出n”);exit(0);int i,j;printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);while(s->length>=maxsize){ printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);} for(i=0;i

length;i++){ } scanf(“%d”,&s->a[i]);printf(“溢出n”);} for(i=0;i

length;i++){ if(s->a[i]>=x)break;} for(j=s->length-1;j>=i;j--){ s->a[j+1]=s->a[j];} s->a[i]=x;s->length++;} void display(shun *s){

int i;if(s->length==0)printf(“沒(méi)有數(shù)據(jù)n”);else for(i=0;i

length;i++)

} main(){

} int x;init(&s);setup(&s);printf(“輸入xn”);scanf(“%d”,&x);insert(&s,x);display(&s);{ } printf(“%-5d”,s->a[i]);

1.(4)#include

#define maxsize 100 #define datatype int typedef struct shun { datatype a[maxsize];int length;}shun;shun s;void init(shun *s){ } void setup(shun *s){

int i,j;printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);while(s->length>=maxsize){ printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);s->length=0;printf(“溢出n”);

} void delet(shun *s,int x){ int i,j;for(i=0;i

length;i++){

} void display(shun *s){

} main(){

} int x;init(&s);setup(&s);printf(“輸入xn”);scanf(“%d”,&x);delet(&s,x);display(&s);int i;if(s->length==0)printf(“沒(méi)有數(shù)據(jù)n”);else for(i=0;i

length;i++){ } printf(“%-5d”,s->a[i]);if(s->a[i]==x){

for(j=i;j

length;j++){ s->a[j]=s->a[j+1];} s->length--;i--;} for(i=0;i

length;i++){ } scanf(“%d”,&s->a[i]);} }

2.#include

#define maxsize 100 #define datatype int typedef struct shun { datatype a[maxsize];int length;}shun;shun a,b,c;void init(shun *s){ } void setup(shun *s){

} } int i,j,t;printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);while(s->length>=maxsize){ printf(“需要幾個(gè)數(shù)n”);scanf(“%d”,&s->length);} for(i=0;i

length;i++){ } for(i=0;i

length;i++){

for(j=i+1;j

length;j++){

} if(s->a[i]

a[j]){

} t=s->a[i];s->a[j]=t;s->a[i]=s->a[j];scanf(“%d”,&s->a[i]);s->length=0;printf(“溢出n”);

void cat(shun *a,shun *b){ int i,j=0,t;if((a->length+b->length)>=maxsize){

} for(i=0;ilength;i++){ } for(j=0;j

length;j++){

} =a->length+b->length;

} void display(shun *s){

} int i;if(s->length==0)printf(“沒(méi)有數(shù)據(jù)n”);else for(i=0;i

length;i++){ } printf(“%-5d”,s->a[i]);} for(i=0;i

for(j=i+1;j

} if(c.a[i]

} t=c.a[i];c.a[j]=t;c.a[i]=c.a[j];c.a[i]=b->a[j];i++;c.a[i]=a->a[i];printf(“溢出n”);exit(0);

main(){

} init(&a);printf(“a初始化n”);setup(&a);init(&b);setup(&b);cat(&a,&b);display(&c);printf(“b初始化n”);

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)1.(1)

1.(2)

1.(3)

1.(4)

2.金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

我覺(jué)得編程不能只要完成其主要功能就行了,還要考慮到邊界值,考慮是否會(huì)出錯(cuò)等等。有時(shí)候一種方法編不通,不如換種方法編。我覺(jué)得編程挺考慮耐心的,恩,就這么多感悟了。

實(shí)驗(yàn)項(xiàng)目名稱: 單鏈表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)2 單鏈表

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

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

掌握單鏈表的定位、插入、刪除等操作。

2、實(shí)驗(yàn)要求

(1)注意鏈表的空間是動(dòng)態(tài)分配的,某結(jié)點(diǎn)不用之后要及時(shí)進(jìn)行物理刪除,以便釋放其內(nèi)存空間。

(2)鏈表不能實(shí)現(xiàn)直接定位,一定注意指針的保存,防止丟失。

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

turbo c 2.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)編寫程序建立一個(gè)單鏈表,并逐個(gè)輸出單鏈表中所有數(shù)據(jù)元素。(2)在遞增有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,保持單鏈表的有序性。

解題思路:首先查找插入的位置然后進(jìn)行插入操作;從第一個(gè)結(jié)點(diǎn)開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入位置;然后在找到的此結(jié)點(diǎn)之前插入新結(jié)點(diǎn);注意保留插入位置之前結(jié)點(diǎn)的指針才能完成插入操作。

(3)編寫實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表就地逆置的子函數(shù),并編寫主函數(shù)測(cè)試結(jié)果。

2、選做題

已知指針la和lb分別指向兩個(gè)無(wú)頭結(jié)點(diǎn)單鏈表的首元結(jié)點(diǎn)。要求編一算法實(shí)現(xiàn),從表la中刪除自第i個(gè)元素起共len個(gè)元素后,將它們插入到表lb中第j個(gè)元素之前。程序清單:

1.(1)

#include

#define datatype char typedef struct lnklist { datatype a;struct lnklist *next;}list;list *s;list *setup(list *s)

{

} void display(list *head){ list *rear;if(head==null){

} } main(){

list *head;head=setup(s);display(head);free(s);rear=head;printf(“%c”,rear->a);while(rear->next!=null){

} rear=rear->next;printf(“%c”,rear->a);printf(“沒(méi)有數(shù)據(jù)n”);else list *head=null;list *rear=null;

char c;printf(“請(qǐng)輸入c直到$n”);c=getchar();while(c!='$'){

} if(rear!=null)rear->next=null;return head;s=malloc(sizeof(list));s->a=c;if(head==null){ } else rear->next=s;rear=s;c=getchar();head=s;

} free(head);1.(2)#include

#define datatype char typedef struct lnklist { datatype a;struct lnklist *next;}list;list *s;list *setup(list *s){

} void paixu(list *head){

list *rear;list *p;datatype min;if(head==null){ list *head=null;list *rear=null;

char c;printf(“請(qǐng)輸入c直到$n”);c=getchar();while(c!='$'){

} if(rear!=null)rear->next=null;return head;s=malloc(sizeof(list));s->a=c;if(head==null){ } else rear->next=s;rear=s;c=getchar();head=s;

} void insert(list *head,datatype x){

list *p;list *q;list *r;if(head==null)printf(“空表n”);p=head;q=head;r=malloc(sizeof(list));r->a=x;while(p->next!=null){

} while(q->next!=p)q=q->next;r->next=p;q->next=r;if(p->next==null)if(x

a){ } p=p->next;break;} p=head;

while(p->next!=null){

do {

rear=rear->next;if(min>rear->a){

} min=rear->a;rear->a=p->a;p->a=min;

min=p->a;rear=p;printf(“空表!n”);exit(0);} while(rear->next!=null);p=p->next;}

} void display(list *head){ list *rear;if(head==null){

} } main(){

} datatype x,c;list *head;head=setup(s);paixu(head);printf(“請(qǐng)輸入xn”);c=getchar();x=getchar();insert(head,x);display(head);free(s);free(head);rear=head;printf(“%c”,rear->a);while(rear->next!=null){

} rear=rear->next;printf(“%c”,rear->a);printf(“沒(méi)有數(shù)據(jù)n”);else p->next=r;1.(3)#include

#define datatype char typedef struct lnklist { datatype a;struct lnklist *next;}list;list *s;

list *setup(list *s){

} list *nizhi(list *head){

list *h;list *rear;int i=0;char b[100];h=malloc(sizeof(list));h->next=head;rear=head;do {

b[i]=rear->a;rear=rear->next;i++;list *head=null;list *rear=null;

char c;printf(“請(qǐng)輸入c直到$n”);c=getchar();while(c!='$'){

} if(rear!=null)rear->next=null;return head;s=malloc(sizeof(list));s->a=c;if(head==null){ } else rear->next=s;rear=s;c=getchar();head=s;}while(rear->next!=null);b[i]=rear->a;rear=head;for(;i>=0;i--){

} rear->a=b[i];rear=rear->next;

} void display(list *head){ list *rear;if(head==null){

} } main(){

} list *head;head=setup(s);head=nizhi(head);display(head);free(s);free(head);rear=head;printf(“%c”,rear->a);while(rear->next!=null){

} rear=rear->next;printf(“%c”,rear->a);printf(“沒(méi)有數(shù)據(jù)n”);else return head;2.#include

#define datatype char typedef struct lnklist { datatype a;struct lnklist *next;}list;list *s1;list *s2;list *setup(list *s){

list *head=null;list *rear=null;

char c;printf(“請(qǐng)輸入c直到$n”);c=getchar();while(c!='$')

} void dein(list *la,list *lb,int i,int len,int j){

int k;list *rear;list *t;list *h;list *r;list *q;h=null;rear=la;q=la;for(k=1;k!=i;k++){

} while(q->next!=rear){

t=malloc(sizeof(list));t->a=rear->a;if(h==null)h=t;q=q->next;for(k=1;k<=len;k++)rear=rear->next;if(rear->next==null&&k!=i){

} printf(“沒(méi)找到i的位置n”);exit(0);

{

} if(rear!=null)rear->next=null;return head;s=malloc(sizeof(list));s->a=c;if(head==null){ } else rear->next=s;rear=s;c=getchar();head=s;

} void display(list *head){ list *rear;if(head==null){

rear=head;printf(“%c”,rear->a);while(rear->next!=null){

} printf(“n”);rear=rear->next;printf(“%c”,rear->a);printf(“沒(méi)有數(shù)據(jù)n”);else

} q->next=rear;if(r!=null)r->next=null;rear=lb;for(k=1;k!=j;k++){

} q=lb;while(q->next!=rear)q=q->next;r->next=rear;q->next=h;rear=rear->next;if(rear->next==null&&k!=j){

} printf(“沒(méi)找到j(luò)的位置n”);exit(0);else r->next=t;r=t;rear=rear->next;if(rear->next==null&&k

} printf(“l(fā)en太長(zhǎng)n”);exit(0);

} } main(){ char c;

} list *la;list *lb;int i,len,j;printf(“建立單鏈表lan”);la=setup(s1);printf(“建立單鏈表lbn”);lb=setup(s2);printf(“請(qǐng)輸入要?jiǎng)h的位置in”);scanf(“%d”,&i);printf(“請(qǐng)輸入要?jiǎng)h減的數(shù)據(jù)長(zhǎng)度lenn”);scanf(“%d”,&len);printf(“請(qǐng)輸入要插入的位置jn”);scanf(“%d”,&j);dein(la,lb,i,len,j);printf(“顯示lan”);display(la);printf(“顯示lbn”);display(lb);free(la);free(lb);c=getchar();

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)1.(1)

1.(2)

1.(3)

2.金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

單鏈表以前沒(méi)怎么編過(guò),所以現(xiàn)在編有點(diǎn)陌生,要編譯好幾次才能運(yùn)行。我覺(jué)得還是不能光看書,還要多編幾道題比較有手感。

實(shí)驗(yàn)項(xiàng)目名稱: 堆棧和隊(duì)列 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)3 堆棧和隊(duì)列

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

(1)掌握應(yīng)用棧解決問(wèn)題的方法。(2)掌握利用棧進(jìn)行表達(dá)式求和的算法。

(3)掌握隊(duì)列的存儲(chǔ)結(jié)構(gòu)及基本操作實(shí)現(xiàn),并能在相應(yīng)的應(yīng)用問(wèn)題中正確選用它們。

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

turbo c 2.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)判斷一個(gè)算術(shù)表達(dá)式中開(kāi)括號(hào)和閉括號(hào)是否配對(duì)。(2)測(cè)試“漢諾塔”問(wèn)題。

(3)假設(shè)稱正讀和反讀都相同的字符序列為”回文”,試寫一個(gè)算法判別讀入的一個(gè)以’@’為結(jié)束符的字符序列是否是“回文”。

2、選做題

在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)隊(duì)列的入列和出列算法。設(shè)每個(gè)元素表示一個(gè)待處理的作業(yè),元素值表示作業(yè)的預(yù)計(jì)時(shí)間。入隊(duì)列采取簡(jiǎn)化的短作業(yè)優(yōu)先原則,若一個(gè)新提交的作業(yè)的預(yù)計(jì)執(zhí)行時(shí)間小于隊(duì)頭和隊(duì)尾作業(yè)的平均時(shí)間,則插入在隊(duì)頭,否則插入在隊(duì)尾。程序清單:

1.(1)

#include

#include

char a[100];int panduan(char *a){

int i,k,count1=0,count2=0;for(i=0;a[i]!='';i++){ {

count1++;for(k=i+1;a[k]!='';k++){ if(a[k]==')')if(a[i]=='(')

} main(){

} printf(“請(qǐng)輸入算式n”);gets(a);if(panduan(a)==1){ } else printf(“算式()不配對(duì)n”);printf(“算式()配對(duì)n”);

break;} if(a[k]=='')return 0;} if(a[i]==')')} if(count1!=count2)return 0;return 1;count2++;1.(2)

#include

int i;void move(int n,char a,char c){ printf(“第%d步:將%d號(hào)盤子%c--->%cn”,i++,n,a,c);} void hanno(int n,char a,char b,char c){

} main(){ if(n==1){

} hanno(n-1,a,c,b);move(n,a,c);hanno(n-1,b,a,c);move(1,a,c);else

} int n;char a,b,c;printf(“請(qǐng)輸入要移動(dòng)的盤子數(shù)n”);scanf(“%d”,&n);a='a';b='b';c='c';hanno(n,a,b,c);1.(3)

#include

#include

char s[100];int huiwen(char s[]){

} main(){

while(1){ printf(“請(qǐng)輸入字符直到@n”);gets(s);if(huiwen(s))

} printf(“是回文n”);printf(“不是回文n”);else int i,j=0;char b[100];for(i=0;s[i]!='@';i++);for(i=i-1;i>=0;i--){

} j=0;for(i=0;s[i]!='@';i++){ } return 1;return 0;b[j]=s[i];j++;if(s[i]!=b[j])j++;

}

2.#include

#define maxsize 100 typedef struct duilie {

int a[maxsize];int head;int rear;}dui;dui *s;void init(dui *s){

} void setup(dui *s,int x){

if(x<((s->a[s->head]+s->a[s->rear])/2)){

} else { s->rear=(s->rear++)%maxsize;s->head=(s->head--)%maxsize;s->a[s->head]=x;s->head=maxsize-1;s->rear=maxsize-1;s->a[s->head]=0;s->a[s->rear]=0;

} } s->a[s->rear]=x;void display(dui *s){

printf(“s隊(duì)為:”);while(s->head==s->rear){ printf(“%-3d”,s->a[s->head]);

} main(){

} int x;while(1){ printf(“請(qǐng)輸入x直到0n”);scanf(“%d”,&x);setup(s,x);if(x==0)} if(s->head!=(s->rear+1)%maxsize)printf(“隊(duì)滿n”);display(s);break;} s->head=(s->head++)%maxsize;

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)1.(1)

1.(2)

1.(3)

五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 串 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)4 串

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

掌握串的存儲(chǔ)及應(yīng)用。

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

turbo c 2.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)編寫輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果。

(2)編寫輸出字符串s中值等于字符ch的所有字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果。

解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),在本題中循環(huán)調(diào)用。(3)設(shè)字符串采用單字符的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),編程刪除串s從位置i開(kāi)始長(zhǎng)度為k的子串。

2、選做題

假設(shè)以鏈結(jié)構(gòu)表示串,編寫算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,若串t中不存在這個(gè)字符,則將串s聯(lián)接在串t的末尾。

提示:為提高程序的通用性,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤輸入。程序清單:

1.(1)

#include

#include

void fun(char s[],char ch){

int i;for(i=0;s[i]!='';i++){

} printf(“沒(méi)找到n”);if(ch==s[i]){

} printf(“找到字符%c在位置%dn”,s[i],i+1);exit(0);

} main(){

} char s[100],ch;printf(“請(qǐng)輸入字符串sn”);gets(s);printf(“請(qǐng)輸入要查找的字符chn”);scanf(“%c”,&ch);fun(s,ch);1.(2)

#include

#include

char s[100];void fun(char s[],char ch){ int i;if(strcmp(s,“")==0){ printf(”字符串s為空n“);exit(0);} for(i=0;s[i]!='';i++){

} main(){ char ch;printf(”請(qǐng)輸入字符串sn“);gets(s);printf(”請(qǐng)輸入要查找的chn“);scanf(”%c“,&ch);fun(s,ch);} if(ch==s[i])printf(” %c“,s[i]);} 1.(3)

#include

#include

typedef struct chuanlian { char c;struct chuanlian *next;}chuan;chuan *s;chuan *setup(chuan *s){

} void delet(chuan *chu,int i,int k){

int j;chuan *p;chuan *t;if(chu==null){

} p=chu;for(j=1;j

c=ch;if(head==null){ } else

} if(rear!=null)rear->next=null;return head;rear->next=s;rear=s;head=s;s=malloc(sizeof(chuan));ch=getchar();

}

void display(chuan *chu){ chuan *p;

} main(){

int i,k;chuan *head;head=setup(s);printf(”請(qǐng)輸入要?jiǎng)h除字符的位置in“);scanf(”%d“,&i);p=chu;if(chu==null){

} printf(”%c“,p->c);while(p->next!=null){

} p=p->next;printf(”%c“,p->c);printf(”空串n“);exit(0);{

} t=p->next;for(j=1;j

} p->next=t;if(p->next==null&&j

} t=t->next;printf(”串長(zhǎng)度太小,無(wú)法刪除%d個(gè)元素n“,k);exit(0);if(p->next==null&&j

} p=p->next;printf(”無(wú)法找到第%d位置n“,i);exit(0);

printf(”請(qǐng)輸入要?jiǎng)h除字符的個(gè)數(shù)kn“);scanf(”%d“,&k);delet(head,i,k);display(head);free(head);free(s);} 2.#include

#include

typedef struct chuanlian { char c;struct chuanlian *next;}chuan;chuan *s,*t;chuan *setup(chuan *chu){

chuan *head=null;chuan *rear=null;char ch;printf(”請(qǐng)輸入字符ch直到$n“);ch=getchar();while(ch!='$'){ chu=malloc(sizeof(chuan));

chu->c=ch;if(head==null){ head=chu;

} } else rear->next=chu;rear=chu;ch=getchar();} if(rear!=null)rear->next=null;return head;

void insert(chuan *s1,chuan *s2,char x){

chuan *p;chuan *q;p=s1;if(s1==null){

} {

} while(p->next!=null){ if(p->c==x)break;printf(”s是空串n“);exit(0);if(s2==null)printf(”t是空串n“);exit(0);

} } p=p->next;if(p->next==null)p->next=s2;else {

} q=s2;while(q->next!=null)q=q->next;q->next=p->next;p->next=s2;void display(chuan *chu){ chuan *p;

} p=chu;if(chu==null){

} printf(”%c“,p->c);while(p->next!=null){

} p=p->next;printf(”%c“,p->c);printf(”空串n“);exit(0);

main(){

char x,c;printf(”建立單鏈串tn“);t=setup(t);c=getchar();printf(”建立單鏈串sn“);s=setup(s);c=getchar();printf(”請(qǐng)輸入要在什么字符后插入n");x=getchar();

}

insert(t,s,x);display(t);

數(shù)據(jù)結(jié)構(gòu)與算法課程心得體會(huì)篇二

數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)班學(xué)習(xí)體會(huì)

000648043 姚金宇

我是計(jì)算機(jī)系2006級(jí)本科生,在大二上學(xué)期選修了張銘老師的數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)班。數(shù)據(jù)結(jié)構(gòu)與算法課是每一個(gè)計(jì)算機(jī)專業(yè)學(xué)生的必修課,從我目前所學(xué)習(xí)的后續(xù)課程,包括算法設(shè)計(jì)、編譯技術(shù)等課程來(lái)看,這門課是其非常重要的基礎(chǔ)課程之一。

我從初中就開(kāi)始接觸高中的信息學(xué)奧林匹克競(jìng)賽,對(duì)數(shù)據(jù)結(jié)構(gòu)與算法方面的相關(guān)知識(shí)接觸的比較早。張老師為了更有針對(duì)性地對(duì)具有不同基礎(chǔ)的學(xué)生進(jìn)行因材施教,開(kāi)設(shè)了數(shù)據(jù)結(jié)構(gòu)算法實(shí)驗(yàn)班,我很榮幸地被批準(zhǔn)通過(guò)選修實(shí)驗(yàn)班的課。通過(guò)一個(gè)學(xué)期的學(xué)習(xí),我加深了對(duì)數(shù)據(jù)結(jié)構(gòu)與算法的相關(guān)知識(shí)的理解,并通過(guò)張老師細(xì)致地講解,將自己過(guò)去從高中競(jìng)賽所學(xué)到的離散的、碎片式的知識(shí)點(diǎn)連貫地串了起來(lái),形成了一套較為完整的知識(shí)體系。我想這對(duì)于我后續(xù)的學(xué)習(xí)和對(duì)更高層次數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)的探索,都是大有裨益的。

我認(rèn)為,在這門課的學(xué)習(xí)過(guò)程中,張老師所引導(dǎo)我們掌握的不僅僅是知識(shí)點(diǎn)與問(wèn)題的簡(jiǎn)單聯(lián)系,而是進(jìn)行拓展性地思考和探索。例如樹(shù)的順序存儲(chǔ),除了講解各種帶標(biāo)記的存儲(chǔ)方法以外,我們還討論了這些存儲(chǔ)方式中記錄的信息是不是都是必須的、如何用最少的標(biāo)記信息表示一棵樹(shù)等問(wèn)題。這就讓我們對(duì)原本看似平凡的知識(shí)有更深刻的認(rèn)識(shí)。另外,我們所完成的作業(yè)和練習(xí)也都不是簡(jiǎn)單的解題訓(xùn)練,很多問(wèn)題都是帶有可研究性與可擴(kuò)展性的,甚至很多問(wèn)題沒(méi)有單一的結(jié)論,這就引導(dǎo)我們創(chuàng)造性地應(yīng)用所學(xué)的知識(shí)去研究問(wèn)題、解決問(wèn)題。

張老師在實(shí)驗(yàn)班的課堂上不但注重基礎(chǔ)知識(shí)的講解,還會(huì)適當(dāng)介紹一些較為高級(jí)的數(shù)據(jù)結(jié)構(gòu)(例如伸展樹(shù)、后綴樹(shù)等),以及一些較新的算法研究成果。這些介紹不僅對(duì)于鞏固基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)有很強(qiáng)的促進(jìn)作用,還讓對(duì)我們往后更難的課程更有信心。事實(shí)上,我認(rèn)為算法與數(shù)據(jù)結(jié)構(gòu)在我們計(jì)算機(jī)專業(yè)課程的學(xué)習(xí)中是無(wú)處不在的,圖論中的樹(shù)、圖模型,組合數(shù)學(xué)中模型的計(jì)數(shù),編譯技術(shù)中關(guān)于文法的分析、自動(dòng)機(jī)模型,無(wú)一不包含數(shù)據(jù)結(jié)構(gòu)與算法的理論。能夠更快、更好地掌握后續(xù)這些課程的知識(shí)體系,于我在數(shù)據(jù)結(jié)構(gòu)與算法課中所學(xué)是分不開(kāi)的。我是北大acm隊(duì)員之一,并于今年代表北京大學(xué)參加了第32屆acm-icpc國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽全球總決賽,獲得了第13名。acm-icpc競(jìng)賽十分注重選手對(duì)于模型抽象的能力、對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法的理解以及編程能力。這門課程對(duì)我參加acm競(jìng)賽無(wú)疑也是幫助甚大。它讓我更系統(tǒng)、透徹地理解了數(shù)據(jù)結(jié)構(gòu)與算法的相關(guān)知識(shí),對(duì)于在賽場(chǎng)上的解題能力和解題速度都有很大的提高??偠灾?,張老師的數(shù)據(jù)結(jié)構(gòu)與算法這門課程作為我的必修課之一,對(duì)于我計(jì)算機(jī)專業(yè)的學(xué)習(xí)是幫助很大并且影響深遠(yuǎn)的。

北京大學(xué)計(jì)算機(jī)系2006級(jí)本科生

000648043 姚金宇

2008年4月14日

數(shù)據(jù)結(jié)構(gòu)與算法課程心得體會(huì)篇三

課程設(shè)計(jì)的心得體會(huì)

陳康蔭080401200708級(jí)計(jì)科系計(jì)本(2)班

完成了這次的二元多項(xiàng)式加減運(yùn)算問(wèn)題的課程設(shè)計(jì)后,我的心得體會(huì)很多,細(xì)細(xì)梳理一下,有以下幾點(diǎn):

1、程序的編寫中的語(yǔ)法錯(cuò)誤及修改

因?yàn)槲以诮鉀Q二元多項(xiàng)式問(wèn)題中,使用了鏈表的方式建立的二元多項(xiàng)式,所以程序的空間是動(dòng)態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點(diǎn),所以使得程序得到簡(jiǎn)化。但是出現(xiàn)的語(yǔ)法問(wèn)題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫(kù)函數(shù)的規(guī)范使用,這些問(wèn)題均可以根據(jù)編譯器的警告提示,對(duì)應(yīng)的將其解決。

2、程序的設(shè)計(jì)中的邏輯問(wèn)題及其調(diào)整

我在設(shè)計(jì)程序的過(guò)程中遇到許多問(wèn)題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時(shí)候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時(shí)候,按某種順序?qū)Φ诙P(guān)鍵字進(jìn)行排序。在此程序中共涉及到3個(gè)量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來(lái)看,由于要求是降冪排序且含有2個(gè)關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來(lái)排序,當(dāng)x的指數(shù)相同時(shí),再以y為關(guān)鍵字,按照y的指數(shù)大小來(lái)進(jìn)行降序排列。

另外,我在加法函數(shù)的編寫過(guò)程中也遇到了大量的問(wèn)題,由于要同時(shí)比較多個(gè)關(guān)鍵字,而且設(shè)計(jì)中涉及了數(shù)組和鏈表的綜合運(yùn)用,導(dǎo)致反復(fù)修改了很長(zhǎng)的時(shí)間才完成了一個(gè)加法的設(shè)計(jì)。但是,現(xiàn)在仍然有一個(gè)問(wèn)題存在:若以0為系數(shù)的項(xiàng)是首項(xiàng)則顯示含有此項(xiàng),但是運(yùn)算后則自動(dòng)消除此項(xiàng),這樣是正確的。但是當(dāng)其不是首項(xiàng)的時(shí)候,加法函數(shù)在顯示的時(shí)候有0為系數(shù)的項(xiàng)時(shí),0前邊不顯示符號(hào),當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時(shí),忽略這一項(xiàng)。這也是本程序中一個(gè)不完美的地方。

我在設(shè)計(jì)減法函數(shù)的時(shí)候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來(lái)仔細(xì)研究算法,后來(lái)發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過(guò)是將二元多項(xiàng)式b的所有項(xiàng)取負(fù)再用加法函數(shù)即可,可見(jiàn)算法的重要性不低于程序本身。

3、程序的調(diào)試中的經(jīng)驗(yàn)及體會(huì)

我在調(diào)試過(guò)程中,發(fā)生了許多小細(xì)節(jié)上的問(wèn)題,它們提醒了自己在以后編程的時(shí)候要注意細(xì)節(jié),即使是一個(gè)括號(hào)的遺漏或者一個(gè)字符的誤寫都會(huì)造成大量的錯(cuò)誤,浪費(fèi)許多時(shí)間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時(shí)候,一定要仔細(xì)、認(rèn)真、專注。

我還有一個(gè)很深的體會(huì)就是格式和注釋,由于平時(shí)不注意格式和注釋這方面的要求,導(dǎo)致有的時(shí)候在檢查和調(diào)試的時(shí)候很不方便。有的時(shí)候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時(shí)候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點(diǎn),就是在修改的時(shí)候,要注意修改前后的不同點(diǎn)在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。

全文閱讀已結(jié)束,如果需要下載本文請(qǐng)點(diǎn)擊

下載此文檔
你可能感興趣的文章
a.付費(fèi)復(fù)制
付費(fèi)獲得該文章復(fù)制權(quán)限
特價(jià):5.99元 10元
微信掃碼支付
已付款請(qǐng)點(diǎn)這里
b.包月復(fù)制
付費(fèi)后30天內(nèi)不限量復(fù)制
特價(jià):9.99元 10元
微信掃碼支付
已付款請(qǐng)點(diǎn)這里 聯(lián)系客服