<ruby id="26blz"></ruby>
    1. <pre id="26blz"></pre>
    2. 久久夜色精品国产网站,丁香五月网久久综合,国产特色一区二区三区视频,无码一区二区三区视频,国产成人精品无缓存在线播放,视频区 国产 图片区 小说区,精品一区二区三区日韩版,国模雨珍浓密毛大尺度150p
      首頁 > 文章中心 > 正文

      數據結構課程設計心得體會

      前言:本站為你精心整理了數據結構課程設計心得體會范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

      一、課程設計目的

      數據結構是計算機科學的基礎理論知識,也是軟件設計的技術基礎。本課程設計的性質是檢驗理論科學系的效果以及綜合運用的能力,目的是訓練學生進行復雜程序設計的技能和培養良好的程序設計習慣。本課程設計的任務是要求學生使用C或C++語言編程,解決具有一定規模的、具有實際意義的應用題,實現理論課所要求的數據組織、存儲、處理的基本方法。

      二、課程設計所用到的工具

      這次課程設計所用到的工具Microsoftvisualc++6.0PC機一臺。

      三、這次課程設計我所選擇的兩個題目

      1、一元多項式計算。

      2、文章編輯器。

      設計分析

      一)一元多項式計算

      1、需求分析

      要求按照指數將序排列建立并輸出多項式;能夠完成兩個多項式的相加、相減,并將結果輸入。

      2、概要設計

      在分析題目要求的基礎上,我首先設計了一個結構體,定義如下:

      structpoly

      {floatcoef;

      intexp;

      polytypenext;};

      在這個結構體中,定義了一個浮點型的系數coef,還定義了一個整形的指針exp。接下來要做的就是定義各個不同用途的函數,以滿足課程設計的需要,所用到的函數定義如下:

      polytypeCreate_Empty_Node(int);創建一個空鏈表

      voidInput_Values(polytype,int);輸入值

      voidInsert_Node(polytype,float,int);插入接點

      voidAdd_Poly(polytype,polytype);將兩個多項式相加

      voidSub_Poly(polytype,polytype);將兩個多項式相減

      voidOutPut_Results(polytype);將結果在顯示器上顯示

      3、源代碼

      #include"stdio.h"

      #include"stdlib.h"

      typedefintdatatype;/*定義多項式節點的結構*/

      typedefstructnode

      {floatcoef;/*系數*/

      intexpn;/*指數*/

      structnode*next;/*指向結構體的指針*/

      }PotyNode;/*建立連表,返回指向多項式頭節點的指針*/

      PotyNode*Creat_PotyNodeTail()

      {PotyNode*L,*s,*r;/*聲明結構體指針*/

      floatc;/*系數*/

      inte;/*指數,建立頭節點,頭節點指針設置為空*/

      L=(PotyNode*)malloc(sizeof(PotyNode));

      L->next=NULL;/*是指針r指向頭節點*/

      r=L;

      printf("\ninputcoefandexpn:");

      scanf("%f%d",&c,&e);

      while(c!=0)/*輸入的第一項系數不允許為0,防止無意義的輸入*/

      {/*初始化節點*/

      s=(PotyNode*)malloc(sizeof(PotyNode));s->coef=c;s->expn=e;s->next=NULL;

      r->next=s;/*連接節點*/

      r=s;/*指針r指向當前節點,用于連接下一節點*/

      printf("\ncoefandexpn:");

      scanf("%f%d",&c,&e);

      }returnL;

      }/*獲得多項式的長度,參數為多項式頭節點指針*/

      intGetlength(PotyNode*L)

      {PotyNode*p;intcount=0;p=L->next;

      while(p)

      {count++;p=p->next;}

      returncount;}/*獲得指向i節點的指針,在刪除節點的時候來獲得準備刪除的前一節點*/

      PotyNode*GetElem_PotyNode(PotyNode*L,inti)

      {PotyNode*p;intj=0;p=L;

      while(p->next&&j!=i)/*當p不是尾節點,并且不是第i個節點*/

      {j++;p=p->next;}

      if(i==j)

      returnp;/*找到節點*/

      else

      returnNULL;/*沒有找到節點*/}/*刪除節點i*/

      intDelete_PotyNode(PotyNode*L,inti)

      {PotyNode*q,*p;/*獲得節點i的前一個節點,便于刪除節點i*/

      p=GetElem_PotyNode(L,i-1);q=p->next;

      if(q)/*如果P為空,則說明節點p也就是節點i-1就是尾節點,節點i實際并不存在*/

      {p->next=q->next;

      free(q);return1;}

      else

      return0;}/*對輸入的多項式LA,LB進行相加,結果為LC,返回指向LC頭節點的指針*/

      PotyNode*Add_PotyNode(PotyNode*LA,PotyNode*LB)

      {PotyNode*LC,*q1,*q2,*r,*s,*p;

      intx=1;q1=LA->next;q2=LB->next;LC=LA;

      LC->next=NULL;/*指針r是當前指針便于進行各種操作*/

      r=LC;

      while(q1&&q2)/*當多項式LA,和LB都沒有結束的時候*/

      {if(q1->expn<q2->expn)

      {s=q1;q1=q1->next;}

      elseif(q1->expn>q2->expn)

      {s=q2;q2=q2->next;}/*指數相同,相加*/

      else{q1->coef+=q2->coef;

      s=q1;q1=q1->next;q2=q2->next;}/*結果連接到多項式LC*/

      s->next=NULL;r->next=s;r=s;}/*如果LB已結束,把LA剩余的部分連接到LC上*/

      if(q1)r->next=q1;

      if(q2)r->next=q2;/*去除多項式中系數為零的項,我對代碼作了小的修改*/

      p=LC->next;

      while(p->next)

      {if(p->coef==0)

      {p=p->next;

      Delete_PotyNode(LC,x);}

      else

      {p=p->next;x++;}}

      returnLC;}/*打印多項式*/

      voidprint_PotyNode(PotyNode*L)

      {inti;PotyNode*p=L->next;

      for(i=0;i<Getlength(L);i++)

      {printf("%fX%d",p->coef,p->expn);

      if(p->next==NULL)

      return;

      elseprintf("+");

      p=p->next;}}

      voidmain()

      {PotyNode*LA,*LB,*LC;

      intx;

      printf("inputLA(endby0):\n");

      LA=Creat_PotyNodeTail();

      printf("f(LA)=");

      print_PotyNode(LA);

      printf("\ninputLB(endby0):\n");

      LB=Creat_PotyNodeTail();

      printf("\n");

      printf("f(LB)=");

      print_PotyNode(LB);

      printf("\n");

      LC=Add_PotyNode(LA,LB);

      printf("Afteraddf(LA)andf(LB),f(LC)is:");

      print_PotyNode(LC);

      scanf("%d",&x);}

      3、運行結果

      提示輸入一個多項式LA(以0結束)然后輸入每項的系數和指數,輸入后再提示輸入另一個多項式LB(以0結束)然后輸入每項的系數和指數。按回車鍵后得出f<LC>=f<LA>+f<LB>。

      二)文章編輯器

      1、需求分析

      1)輸入數據的形式和范圍:可以輸入大寫、小寫的英文字母、任何數字及標點符號。

      2)輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出“全部字母數”、

      “數字個數”、“空格個數”、“文章總字數”(3)輸出刪除某一字符串后的文章

      2、概要設計

      a、建立文本,存儲結構用鏈表

      voidCreateTXT(LINE*&head){

      printf("\n請輸入文本,每行最多輸入80字符!\n");

      printf("輸入Ctrl+E(^E)則結束輸入\n");

      LINE*p=newLINE;//首先為鏈表建立一個附加表頭結點

      head=p;//將p付給表頭指針

      chartmp[80];

      b、計算空格數

      intCount_Space(LINE*&head){//統計空格數

      LINE*p=head;

      intasc_space=32;//空格的ASCIC碼值

      intcount=0;

      do

      {intLen=strlen(p->data);//計算當前data里的數據元素的個數

      for(inti=0;i<Len;i++)

      if(p->data[i]==asc_space)count++;}//計算空格數

      while((p=p->next)!=NULL);//遍歷鏈表

      returncount;}

      c、統計數字數

      intCount_Num(LINE*&head){//統計數字數

      LINE*p=head;

      intcount=0;

      do

      {intLen=strlen(p->data);//計算當前data里的數據元素的個數

      for(inti=0;i<Len;i++)

      if(p->data[i]>=48&&p->data[i]<=57)count++;}//計算空格數

      while((p=p->next)!=NULL);//遍歷鏈表

      returncount;}

      d、統計文章的總字數

      intCount_All_Word(LINE*&head){//統計文章的總字數

      LINE*p=head;//保存鏈表的首地址

      intcount=0;//總字母數

      do

      {count+=strlen(p->data);}//計算當前行內的字符數!除''''\0''''結束符外!注意,該統計包含“空格的長度!”

      while((p=p->next)!=NULL);//遍歷鏈表

      returncount;}

      3、源代碼

      /*definemacrovariables*/

      #definetrue1

      #definefalse0

      #include<stdlib.h>

      #include<stdio.h>

      #include<malloc.h>

      #include<string.h>

      #include<conio.h>

      #defineSTACK_INIT_SIZE100/*variablesinthesavestoragespace*/

      #defineSTACKINCREMENT10/*incrementofdistributioninthesavestoragespace*/

      typedefstruct

      {char*base;/*beforeandafterthecreatingoftheshed,baseisNULL*/

      char*top;/*shedpointer*/

      intstacksize;/*thesavestoragespacedistributivebytheelement*/

      }SqStack;

      SqStackS,q;

      /*constructastructuerarray*/

      typedefstruct{

      charcc[9999];

      intno;}Array;

      /*definethewholebureauvarible*/

      Arraya[10000];

      intm,n,i,j;

      charname[40];

      chart=''''\n'''';

      FILE*fp;

      /*constructanemputyshed*/

      voidInitStack()

      {S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));

      if(S.base==NULL)

      exit(1);

      S.top=S.base;

      S.stacksize=STACK_INIT_SIZE;}

      /*usingcharactershed,acceptthedatafromtheterminal*/

      voidpush(chare)

      {if(S.top-S.base>=S.stacksize)

      {/*applyanewroom*/

      S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));

      if(!S.base)

      exit(1);

      S.top=S.base+S.stacksize;

      S.stacksize+=STACKINCREMENT;}

      /*acceptthenextcharacter*/

      *S.top++=e;}

      /*carrythewholedatainthestackintothedatasection*/

      charpop()

      {chare;

      if(S.top==S.base)

      returnfalse;

      e=*(--S.top);

      returne;}

      /*emptythedatainthestack*/

      voidClearStack()

      {S.top=S.base;/*letS.topandS.basepointtothesameplace*/}

      /*destroythestack*/

      voidDestroyStack()

      {free(S.base);/*freethedatainthestack*/

      S.top=S.base;}

      /*judgetheemputyoftheshed*/

      intStackEmpty()

      {if(S.top==S.base)

      returntrue;

      returnfalse;}

      /*takeoutthedatafromthestackandtheputinthestucterarray*/

      voidBuffer(){

      n=0;m=1;

      /*movethedataintheshadeuntillthestackisempty*/

      while(S.top!=S.base)

      {n=n+1;

      a[m].no=a[m].no+1;

      a[m].cc[n]=*(S.top-1);

      S.top--;}}

      /*savethedata*/

      voidsave()

      {printf("\n\nfilename:");

      scanf("%s",&name);

      fp=fopen(name,"wb");

      for(i=1;i<=m;i++)

      {for(j=a[i].no;j>=1;j--)

      {fwrite(&(a[i].cc[j]),1,1,fp);}

      fwrite(&t,1,1,fp);}

      fclose(fp);}

      /*mainfunction*/

      voidmain()

      {charch,e;

      printf("\n\n\n\t\t\twelcometousethewholescreeneditor");

      printf("\n\npressF6ifyouwanttosavethefile,youcansavethefilewhenyousee\"^Z\"\n");

      printf("\n******************************************************************************\n\n");/*SqStackS_stack,D_stack;*/

      InitStack();/*InitStack(D_stack);*/

      ch=getchar();

      while(ch!=EOF)

      {while(ch!=EOF&&ch!=''''\n'''')

      {switch(ch)

      {case''''#'''':e=pop();break;

      case''''@'''':ClearStack();break;

      default:push(ch);break;}

      ch=getchar();}

      Buffer();

      ClearStack();

      if(ch!=EOF)

      ch=getchar();}

      save();

      DestroyStack();}

      4、運行結果

      三、這次課程設計的心得體會

      通過實習我的收獲如下

      1、鞏固和加深了對數據結構的理解,提高綜合運用本課程所學知識的能力。

      2、培養了我選用參考書,查閱手冊及文獻資料的能力。培養獨立思考,深入研究,分析問題、解決問題的能力。

      3、通過實際編譯系統的分析設計、編程調試,掌握應用軟件的分析方法和工程設計方法。

      4、通過課程設計,培養了我嚴肅認真的工作作風,逐步建立正確的生產觀念、經濟觀念和全局觀念。

      根據我在實習中遇到得問題,我將在以后的學習過程中注意以下幾點:

      1、認真上好專業實驗課,多在實踐中鍛煉自己。

      2、寫程序的過程中要考慮周到,嚴密。

      3、在做設計的時候要有信心,有耐心,切勿浮躁。

      4、認真的學習課本知識,掌握課本中的知識點,并在此基礎上學會靈活運用。

      5、在課余時間里多寫程序,熟練掌握在調試程序的過程中所遇到的常見錯誤,以便能節省調試程序的時間。

      主站蜘蛛池模板: 灵台县| 国产成人免费| 插插射啊爱视频日a级| 麻花传媒在线观看免费| 白嫩人妻精品一二三四区| 双流县| 亚洲精品国产一二三区| 国产尤物精品自在拍视频首页| 亚洲人成电影网站 久久影视| 日韩精品国产中文字幕| 亚洲色一色噜一噜噜噜| 尤物国产精品福利在线网| 国产午夜亚洲精品国产成人| 天天做天天爱夜夜爽导航| 国产成人一区二区三区免费| 国产尤物AV尤物在线看| 国产亚洲一区二区三区成人| 精品999日本久久久影院| 你拍自拍亚洲一区二区三区| 日韩精品一区二区三区中文无码| 久久久久青草线蕉综合超碰| 亚洲中文字幕无码一久久区| 日韩有码中文字幕国产| 在线观看特色大片免费视频| 成人精品日韩专区在线观看| 久久香蕉国产线看观看怡红院妓院 | 亚洲人成自拍网站在线观看 | 亚洲天堂成人一区二区三区| 偷拍精品一区二区三区| 最新国产精品好看的精品| 亚洲AV福利天堂在线观看| 亚洲日本va午夜在线影院| 国产精品久久久久久久久软件| 麻豆麻豆麻豆麻豆麻豆麻豆| 夜色福利站WWW国产在线视频| 日韩精品亚洲aⅴ在线影院| 亚洲国产成人AⅤ片在线观看| 国产精品无码不卡在线播放| 色偷偷亚洲女人天堂观看| 久久精品免视看国产成人| 一区二区三区激情都市|