數據結構(一)線性表(代碼)


(一)順序表

(1)順序表的結構體定義

typedef struct
{
    int data[maxSize];   //默認int型,根據題目要求自行改變
    int length;
 } Sqlist  

 

考試常用順序表定義

int A[maxSize];     //定義了一個長度為n,表內元素為整數的順序表 
int n;   

 

(2)初始化順序表表,創建一個空的線性表

void initList(Sqlist &L)     //表L本身要改變,所以使用引用型 
{
    L.length=0;
  }  

 

(3)判斷順序表是否為空

int IsEmpty(Sqlist L)
{
    return L.length==0;
 } 

 

(4)順序表中按元素值查找

在順序表中查找第一個值等於e的元素,並返回其下標

int FindElem(Sqlist L,int e)
{
    int i;
    for(i=0;i<L.length;++i)
        if(e==L.data[i])
            return i;
    return 0;         //未找到,返回0,作為失敗標記 
 }

 

(5)順序表中刪除元素

刪除順序表中下標為p(0<=p<=L.length-1)的元素,成功返回1,否則返回0,並將被刪除的元素賦值給e

int deleteElem(Sqlist &L,int p,int &e)
{
    int i;
    if(p<0||p>L.length-1)
        return 0;            //越界,刪除失敗,返回-1 
    e = L.data[p];
    for(i=p;i<L.length-1;++i)
        L.data[i]=L.data[i+1];        //從p位置開始,后面的元素前移 
    --(L.length);     //刪除成功,表長減一 
    return 0;        //刪除成功,返回0 
}

 

(6)順序表中插入元素

在順序表L的第p個位置插入新的元素e,如果p的輸入不正確,返回0,否則返回1

int insertElem(Sqlist &L,int p,int e)
{
    int i;
    if(p<0||p>L.length||L.length=maxSize)
        return 0;    //插入失敗,返回0
    for(i=L.length-1;i>=p;--i)
        L.data[i+1]=L.data[i];        //元素后移 
    L.data[p]=x;
    ++(L.length);        //表長加一 
    return 0;         //插入成功,返回0 
 } 

(7)設計一個算法,將順序表中的元素逆置

分析:使用兩個變量i  ,j  指示元素表中的第一個和最后一個元素,交換i  ,  j   所指元素,然后  i  向后移,j   向前移,如此循環,指導 i   和  j相遇

void reverse(Sqlist &L)
{
    int i,j;
    int temp;        //輔助變量,用於交換 
    for(i =0,j=L.length-1;i<j;++i,--j)            //i ,j 相遇時,循環結束 
    {
        temp = L.data[i];
        L.data[i] = L.data[j];
        L.data[j] = temp;
    }
 } 

(8)刪除順序表L中下標 i  到  j  的(包括  i  j  )的所有元素

void delete(Sqlist &L,int i,int j)
{
    int k,delete;
    delete = j-i+1;   //元素要移動的距離
    for(k=j+1;k<L.length;++k)
    {
        L.data[k-delete]=L.data[k];        //用第k個元素去覆蓋它前面的第delete個元素 
    }
    L.length = delete;          
}

 


免責聲明!

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



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