線性表:在資料元素的非空有限集合中,除第乙個元素無直接前驅、最後乙個元素無直接後繼,集合中其餘每個資料元素都有唯一直接前驅唯一直接後繼。
線性表有順序儲存結構和鏈式儲存結構兩種儲存方式。含有大量型別相同記錄的線性表稱為檔案或資料物件。但是乙個線性表中的資料元素必須屬於同乙個資料物件。因此線性表中相鄰元素存在序偶關係。
線性表的特點:
1、同一性:同一資料型別
2、有窮性:有限資料元素
3、有序性:相鄰元素存在序偶關係
本章重點:順序表
n個相同型別的資料元素的有限序列,除第乙個元素無直接前驅、最後乙個元素無直接後繼,集合中其餘每個資料元素都有唯一直接前驅唯一直接後繼,資料元素是一對一的關係。
#pragma once
//線性表的順序儲存結構------順序表
typedef size_t datatype;
#define maxsize 20
typedef struct seqlist
seqlist;
void initlist(seqlist* list); //初始化
datatype size(seqlist* list); //順序表的大小
datatype finddata(seqlist* list, datatype pos); //查詢第i個元素
void printlist(seqlist* list);//輸出順序表
void insertback(seqlist* list, datatype x); //尾插
void insertfront(seqlist* list, datatype x); //頭插
void popback(seqlist* list); //尾刪
void popfront(seqlist* list); //頭刪
void del(seqlist* list, datatype pos); //刪除
void insert(seqlist* list, datatype pos, datatype x); //插入
void modify(seqlist* list, datatype pos, datatype x); //修改
void seqlistremoveall(seqlist *list, datatype x);//刪除所有值為x的資料 要求時間複雜度為n 空間複雜度為1
void initlist(seqlist* list)
void printlist(seqlist* list)
cout << endl;
}datatype size(seqlist* list)
datatype finddata(seqlist* list, datatype pos)
return list->arr[pos - 1];
}void insertback(seqlist* list, datatype x)
else }
void insertfront(seqlist* list, datatype x)
else
list->arr[0] = x;
list->size++; }}
void popback(seqlist* list)
list->arr[list->size - 1] = 0;
list->size--;
}void popfront(seqlist* list)
for (size_t i = 0; i < list->size; i++)
list->size--;
}void del(seqlist* list, datatype pos)
else if (pos > list->size || pos < 0)
else
list->size--; }}
void insert(seqlist* list, datatype pos, datatype x)
else if (pos > list->size + 1 || pos < 0)
else
list->arr[pos - 1] = x;
list->size++; }}
void modify(seqlist* list, datatype pos, datatype x)
list->arr[pos - 1] = x;
}void seqlistremoveall(seqlist *list, datatype x)
else
}list->size -= count;
}void testseqlist()
//順序表的動態儲存----動態順序表
typedef struct ma_seqlist
ma_seqlist;
//初始化
void init_ma_list(ma_seqlist* list, size_t capacity)
//擴容
void checkcapacity(ma_seqlist* list)
}//尾插
void insert_ma_back(ma_seqlist* list, datatype x)
Data Structures 資料結構基礎
用計算機解決乙個具體問題時,一般要經過下列幾個步驟 首先要從具體問題抽象出乙個適當的數學模型,然後設計乙個解此數學模型的演算法,最後編出程式 進行測試 調整直至得到最終解答。尋求數學模型的實質是分析問題 從中提取操作的物件,並找出這些操作物件之間含有的關係,這實際上就是分析資料結構。資料結構是研究非...
Data Structures 尋找第k大
對於bst,無壓力的可以,所以無需贅言,請見 1 program bst kthfind input,output 2 type point node 3 node record4 data,leftsum,rightsum longint 5 left,right point 6 end 7 va...
Data Structures 06 單鏈表面試題
獲取到單鏈表中的有效節點個數 不包括頭節點 public static intgetlength heronode head int length 0 heronode cur head.next while cur null return length 獲取到單鏈表中的有效節點個數 public ...