哇 好久沒更博客了 因為從上次更文到現在為止,我一直在學c#,然后也覺得沒什么太大的東西想寫在博客上,
總之這次就簡單的傳一下學校安排的數據結構的實驗,我還是學生,是新手,希望能繼續跟大家一起學習,
共勉,有錯望指出,這樣就可以不斷學習,謝謝。
*******這次實驗是第一個實驗,名稱是線性表操作,我就結合我所學的寫一下。********
*******線性表的概念我就不多提了,直接上代碼,簡單粗暴。********
*******線性表操作我寫有了 初始化 判斷為空 判斷為滿 插入 追加 刪除 銷毀 遍歷等操作********
代碼如下:
# include<iostream>
# include<stdlib.h>
using namespace std;
typedef struct Arr
{
int * pBase; //存儲空間的基地址
int len; //當前順序表所能容納的最大長度
int cnt; //當前順序表的有效長度
} Shun;
void csh(Shun & pArr,int len);//功能:初始化順序表
bool append(Shun & pArr,int val);//功能:往順序表中追加元素
bool isempty(Shun & pArr);//功能:判斷順序表是否為空
bool isfull(Shun & pArr);//功能:判斷順序表是否為滿
bool Insert(Shun & pArr,int pos,int val);//功能:在指定位置插入一個元素
void Show(Shun & pArr);//功能:遍歷整個順序表並打印
bool Delete(Shun & pArr,int pos);//功能:刪除順序表指定位置的元素
bool xh(Shun & pArr);//功能:銷毀順序表
int main(void)
{
Shun biao; //聲明一個順序表
csh(biao,10); //初始化該順序表並賦予10單位的長度
cout<<"往順序表里追加(增加)5個元素,追加后的結果如以下所示:"<<endl;
append(biao,1);
append(biao,5);
append(biao,87);
append(biao,12);
append(biao,100);
Show(biao);
cout<<"刪除第3個元素,刪除后的結果如以下所示:"<<endl;
Delete(biao,3);
Show(biao);
cout<<"往第2個位置插入一個值“520”,插入后的結果如以下所示:"<<endl;
Insert(biao,2,520);
Show(biao);
if(xh(biao))
cout<<"已銷毀成功!!"<<endl;
else
cout<<"銷毀出錯!!"<<endl;
return 0;
}
void csh(Shun & pArr,int len)
{
pArr.pBase = new int[len];
if(!pArr.pBase)
exit(-1);
pArr.len=len;
pArr.cnt=0;
}
bool isempty(Shun & pArr)
{
if(0==pArr.cnt)
return true;
else
return false;
}
bool isfull(Shun & pArr)
{
if(pArr.len==pArr.cnt)
return true;
else
return false;
}
void Show(Shun & pArr)
{
if(isempty(pArr))
cout<<"順序表為空!!"<<endl;
else
{
for(int i=0; i<pArr.cnt; i++)
{
cout<<pArr.pBase[i]<<" ";
}
cout<<endl;
}
}
bool append(Shun & pArr,int val)
{
if(isfull(pArr))
return false;
else
{
pArr.pBase[pArr.cnt++]=val;
return true;
}
}
bool Insert(Shun & pArr,int pos,int val)
{
if(isfull(pArr))
return false;
if(pos<1||pos>pArr.cnt+1)
return false;
if(pos<=pArr.cnt)
{
for(int i=pArr.cnt-1; i>=pos-1; i--)
{
pArr.pBase[i+1]=pArr.pBase[i];
}
}
pArr.pBase[pos-1]=val;
pArr.cnt++;
return true;
}
bool Delete(Shun & pArr,int pos)
{
if(isempty(pArr))
return false;
if(pos<0||pos>pArr.cnt)
return false;
for(int i=pos; i<pArr.cnt; i++)
{
pArr.pBase[i-1]=pArr.pBase[i];
}
pArr.cnt--;
return true;
}
bool xh(Shun & pArr)
{
if(pArr.pBase==NULL)
return false;
delete pArr.pBase;
pArr.pBase=NULL;
return true;
}
效果圖如下:

******共勉******
