c++簡單編寫線性表(實驗)


哇 好久沒更博客了  因為從上次更文到現在為止,我一直在學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;
}

 

效果圖如下:

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM