數據結構實驗報告
想必學計算機專業的同學都知道數據結構是一門比較重要的課程,那麼,下面是本站小編給大家整理收集的數據結構實驗報告,供大家閱讀參考。
數據結構實驗報告1
一、實驗目的及要求
1)掌握棧和隊列這兩種特殊的線性表,熟悉它們的特性,在實際問題背景下靈活運用它們。
本實驗訓練的要點是“棧”和“隊列”的觀點;
二、實驗內容
1) 利用棧,實現數制轉換。
2) 利用棧,實現任一個表達式中的語法檢查(選做)。
3) 編程實現隊列在兩種存儲結構中的基本操作(隊列的初始化、判隊列空、入隊列、出隊列);
三、實驗流程、操作步驟或核心代碼、算法片段
順序棧:
Status InitStack(SqStack &S)
{
=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!)
return ERROR;
=;
ksize=STACK_INIT_SIZE;
return OK;
}
Status DestoryStack(SqStack &S)
{
free();
return OK;
}
Status ClearStack(SqStack &S)
{
=;
return OK;
}
Status StackEmpty(SqStack S)
{
if(==)
return OK;
return ERROR;
}
int StackLength(SqStack S)
{
return ;
}
Status GetTop(SqStack S,ElemType &e)
{
if(>=ksize)
{
=(ElemType *)realloc(,(ksize+STACKINCREMENT)*sizeof(ElemType));
if(!) return ERROR;
=+ksize;
ksize+=STACKINCREMENT;
}
*++=e;
return OK;
}
Status Push(SqStack &S,ElemType e)
{
if(>=ksize)
{
=(ElemType *)realloc(,(ksize+STACKINCREMENT)*sizeof(ElemType));
if(!)
return ERROR;
=+ksize;
ksize+=STACKINCREMENT;
}
*++=e;
return OK;
}
Status Pop(SqStack &S,ElemType &e)
{
if(==)
return ERROR;
e=*;
return OK;
}
Status StackTraverse(SqStack S)
{
ElemType *p;
p=(ElemType *)malloc(sizeof(ElemType));
if(!p) return ERROR;
p=;
while(p!=)//上面一個...
{
p--;
printf("%d ",*p);
}
return OK;
}
Status Compare(SqStack &S)
{
int flag,TURE=OK,FALSE=ERROR;
ElemType e,x;
InitStack(S);
flag=OK;
printf("請輸入要進棧或出棧的元素:");
while((x= getchar())!='#'&&flag)
{
switch (x)
{
case '(':
case '[':
case '{':
if(Push(S,x)==OK)
printf("括號匹配成功!nn");
break;
case ')':
if(Pop(S,e)==ERROR || e!='(')
{
printf("沒有滿足條件n");
flag=FALSE;
}
break;
case ']':
if ( Pop(S,e)==ERROR || e!='[')
flag=FALSE;
break;
case '}':
if ( Pop(S,e)==ERROR || e!='{')
flag=FALSE;
break;
}
}
if (flag && x=='#' && StackEmpty(S))
return OK;
else
return ERROR;
}
鏈隊列:
Status InitQueue(LinkQueue &Q)
{
t ==
(QueuePtr)malloc(sizeof(QNode));
if (!t) return ERROR;
t->next = NULL;
return OK;
}
Status DestoryQueue(LinkQueue &Q)
{
while(t)
{
=t->next;
free(t);
t=;
}
return OK;
}
Status QueueEmpty(LinkQueue &Q)
{
if(t->next==NULL)
return OK;
return ERROR;
}
Status QueueLength(LinkQueue Q)
{
int i=0;
QueuePtr p,q;
p=t;
while(p->next)
{
i++;
p=t;
q=p->next;
p=q;
}
return i;
}
Status GetHead(LinkQueue Q,ElemType &e)
{
QueuePtr p;
p=t->next;
if(!p)
return ERROR;
e=p->data;
return e;
}
Status ClearQueue(LinkQueue &Q)
{
QueuePtr p;
while(t->next )
{
p=t->next;
free(t);
t=p;
}
t->next=NULL;
->next=NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,ElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof (QNode));
if(!p)
return ERROR;
p->data=e;
p->next=NULL;
->next = p;
=p; //p->next 爲空
return OK;
}
Status DeQueue(LinkQueue &Q,ElemType &e)
-
【熱門】房屋維修申請報告7篇
隨着個人素質的提升,報告有着舉足輕重的地位,我們在寫報告的時候要注意邏輯的合理性。在寫之前,可以先參考範文,下面是小編收集整理的房屋維修申請報告,僅供參考,希望能夠幫助到大家。房屋維修申請報告1尊敬的政府領導:本人xxx,男,19年8月出生,現年歲,未婚。新塘鎮黃沙頭...
-
大學生導遊實踐總結報告
在xx年的這個暑假,我參加了xx旅遊景點講解員這個暑期實踐活動。總的來說,我覺得收穫很大。讓我學習到什麼叫做專業,什麼叫做耐心,還有如何與遊客交流,更好的爲遊客服務。首先,xx旅遊景點講解員一個實踐活動跟一般的實踐活動不一樣,它需要具備有專業知識。要講解,就必須...
-
科長競聘報告(精選5篇)
在不斷進步的時代,需要使用報告的情況越來越多,報告具有雙向溝通性的特點。寫起報告來就毫無頭緒?以下是小編爲大家收集的科長競聘報告(精選5篇),歡迎閱讀與收藏。科長競聘報告1尊敬的各位領導:大家好!我首先感謝領導、同志們的信任和支援,給我這個機會參加競職演講。不...
-
安全檢查整改報告範文
在經濟發展迅速的今天,需要使用報告的情況越來越多,報告具有成文事後性的特點。其實寫報告並沒有想象中那麼難,以下是小編整理的安全檢查整改報告範文,希望對大家有所幫助。安全檢查整改報告範文1根據市委網絡安全和資訊化領導小組辦公室辦關於《開展關鍵資訊基礎...