Data Structures(一)順序表

2021-09-03 07:03:44 字數 2657 閱讀 5610

線性表:在資料元素的非空有限集合中,除第乙個元素無直接前驅、最後乙個元素無直接後繼,集合中其餘每個資料元素都有唯一直接前驅唯一直接後繼。

線性表有順序儲存結構和鏈式儲存結構兩種儲存方式。含有大量型別相同記錄的線性表稱為檔案或資料物件。但是乙個線性表中的資料元素必須屬於同乙個資料物件。因此線性表中相鄰元素存在序偶關係。

線性表的特點:

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 ...