順序表(順序存儲結構)及初始化過程詳解


自定義順序表,C 語言實現代碼如下:

typedef struct Table{
    int * head;//聲明了一個名為head的長度不確定的數組,也叫“動態數組”
    int length;//記錄當前順序表的長度
    int size;//記錄順序表分配的存儲容量
}table;

注意,head 是我們聲明的一個未初始化的動態數組,不要只把它看做是普通的指針。

接下來開始學習順序表的初始化,也就是初步建立一個順序表。建立順序表需要做如下工作:

  • 給 head 動態數據申請足夠大小的物理空間;
  • 給 size 和 length 賦初值;


因此,C 語言實現代碼如下:

#define Size 5 //對Size進行宏定義,表示順序表申請空間的大小
table initTable(){
    table t;
    t.head=(int*)malloc(Size*sizeof(int));//構造一個空的順序表,動態申請存儲空間
    if (!t.head) //如果申請失敗,作出提示並直接退出程序
    {
        printf("初始化失敗");
        exit(0);//強制退出
    }
    t.length=0;//空表的長度初始化為0
    t.size=Size;//空表的初始存儲空間為Size
    return t;
}

擴展:malloc和free 解釋: https://www.cnblogs.com/CheeseIce/p/10846449.html

 

添加一些元素,C 語言實現代碼如下:

#include <stdio.h>
#include <stdlib.h>
#define Size 5
typedef struct Table{
    int * head;
    int length;
    int size;
}table;
table initTable(){
    table t;
    t.head=(int*)malloc(Size*sizeof(int));
    if (!t.head)
    {
        printf("初始化失敗");
        exit(0);//強制退出
    }
    t.length=0;
    t.size=Size;
    return t;
}
//輸出:順序表中元素的函數
void displayTable(table t){
    for (int i=0;i<t.length;i++) {
        printf("%d ",t.head[i]);
    }
    printf("\n");
}
int main(){
    table t=initTable();
    //添加:向順序表中添加元素
    for (int i=1; i<=Size; i++) {
        t.head[i-1]=i;
        t.length++;
    }
    printf("順序表中存儲的元素分別是:\n");
    displayTable(t);
    return 0;
}

 


免責聲明!

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



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