自學 資料結構四月二十三日_線性結構之順序表(2)

Bite_magican發表於2019-04-23

//今天繼續完成連結串列~ 晚上看電影 明天繼續
//1. 什麼是線性結構?
//線性結構是一個有序資料元素集合;
//
//2. 線性結構中都包含什麼內容?
//線性表, 棧, 列隊, 雙佇列, 陣列, 串;
//
//3. 什麼是順序表?順序表的分類?
//一段實體地址連續的儲存單元連成的線性結構(一般用陣列儲存)

//4. 動態順序表的以下操作:
// 動態的順序表
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
typedef int DataType;
typedef struct SeqList
{
DataType* _array;
int _capacity; // 順序表的總大小
int _size; // 順序表中有效元素的個數
}SeqList, *PSeq;

typedef struct SeqList SeqList;
typedef struct SeqList* PSeqList;

// 順序表的初始化
void SeqListInit(PSeq ps, int capacity){
if (NULL == ps){
printf(“空指標\n”);
return;
}
ps->_size = 0;
}

// 在順序表的尾部插入值為data的元素
void SeqListPushBack(PSeq ps, DataType data){
if (NULL == ps){
printf(“空指標\n”);
assert(0);
}
if (_capacity == ps->_size){//判斷是否滿
printf(“空間已滿, 無法寫入\n”);
return;
}
ps->_array[ps->_size] = data;//尾部插入
ps->_size++;//長度加一
}

// 刪除順序表最後一個元素
void SeqListPopBack(PSeq ps){
if (NULL == ps){
printf(“空指標\n”);
assert(0);
}
ps->_size–;//長度減一, 後面的內容丟棄
}

// 在順序表的頭部插入值為data的元素
void SeqListPushFront(PSeq ps, DataType data){
int i = 0;
if (NULL == ps){
printf(“空指標\n”);
assert(0);
}
if (MAX_SIZE == ps->_size){
printf(“空間已滿, 無法寫入\n”);
return;
}
for (i = ps->_size; i > 0; --1){//往後挪, 挪出第一個用來裝入資料

}

}

// 刪除順序表頭部的元素
void SeqListPopFront(PSeq ps);

// 在順序表pos位置插入值為data的元素
void SeqListInsert(PSeq ps, int pos, DataType data);

// 刪除順序表中pos位置上的元素
void SeqListErase(PSeq ps, int pos);

// 在順序表中查詢值為data的元素,找到返回該元素在順序表中的下標,否則返回-1
int SeqListFind(PSeq ps, DataType data);

// 檢測順序表是否為空,如果為空返回非0值,非空返回0
int SeqListEmpty(PSeq ps);

// 返回順序表中有效元素的個數
int SeqListSize(PSeq ps);

// 返回順序表的容量大小
int SeqListCapacity(PSeq ps);

// 將順序表中的元素清空
void SeqListClear(PSeq ps);

// 刪除順序表中第一個值為data的元素
void SeqListRemove(PSeq ps, DataType data);

// 銷燬順序表
void SeqListDestroy(PSeq ps);

// 順序表的擴容
void CheckCapacity(PSeq ps);

相關文章