C初級 順序表

2021-09-14 05:30:06 字數 3623 閱讀 3851

定義:儲存和組織資料的方式

演算法對資料進行處理–>四大基本操作(增 刪 查 改)

根據資料之間的邏輯結構將資料分為以下幾種關係:

1.5資料間的儲存結構

順序表:

鍊錶/雙鏈表

棧和佇列

在實現對陣列的操作之前:

已經預先定義如下結構體變數

typedef

struct list

list;

對結構體變數進行預處理,預處理的過程實際是將順序表的長度初始化為0,包括靜態陣列和動態陣列的初始化

void

init

(list *p)

3.1增的**實現

如果順序表還沒有任何資料的情況下,增加資料的**為:

void

insertnumber1

(list* p,

int data)

如果順序表已經有資料,在順序表的尾部插入資料,**為

void

insertnumber2

(list *p,

int data)

3.如果順序表已經有資料,需要在順序表中間插入,則需要將後面的元素後移,**為

void

insertnumber3

(list *p,

int num,

int data)

//假設num為將要插入的位置

//將num位置及其後的資料向後移動

arr[i]

=data;

p->len++

;//將線性表的長度擴大

}

3.2刪的**實現

線性表刪除元素的方式是通過將要刪除的位置n1,用後面位置n2來代替,後面依次向前挪動

void

deledata

(list* p,

int data)

p->len-1;

break;}

}}

順序表中的查、改操作比較簡單,此處略

3.3查的**實現

3.4改的**實現

查詢如果是有序陣列,那麼可以通過多種方法進行查詢,如果是無序的則只能乙個乙個查詢

#include

#include

#include

typedef

struct list

list;

//順序表初始化,對順序表進行操作

void

init

(list *p)

;//實現插入功能的函式

void

insertdata

(list*p,

int data)

;//實現刪除乙個數字功能的函式

void

deledata

(list *p,

int data)

;//實現刪除所有重複數字功能的函式

void

deledata1

(list *p,

int data)

;//實現查詢功能

void

finddata

(list *p,

int data)

;int

main()

//賦值

for(

int i =

0; i < mylist1.len;

++i)

//輸出

printf

("\n\n以下輸出用來說明對一組數進行刪除數字10的操作:\n");

list mylist2;

//準備乙個順序表

init

(&mylist2)

;for

(int i =

0; i <80;

++i)

printf

("原始陣列內容為:\n");

for(

int i =

0; i < mylist2.len;

++i)

deledata

(&mylist2,10)

;printf

("\n刪除數字10 之後的陣列為:\n");

for(

int i =

0; i < mylist2.len;

++i)

printf

("\n\n以下輸出用來說明對一組數進行刪除重複數字10的操作:\n");

list mylist3;

//準備乙個順序表

init

(&mylist3)

;for

(int i =

0; i <80;

++i)

printf

("原始陣列內容為:\n");

for(

int i =

0; i < mylist3.len;

++i)

deledata1

(&mylist3,10)

;printf

("\n刪除數字10 之後的陣列為:\n");

for(

int i =

0; i < mylist3.len;

++i)

printf

("\n\n以下內容用來查詢值為3在這個陣列中是否存在:\n");

//查詢mylist3中數字為3的值

finddata

(&mylist3,3)

;getchar()

;return0;

}void

init

(list *p)

void

insertdata

(list*p,

int data)

p->arr[i]

= data;

p->len++

;#endif

}//刪除元素不是正常想象的直接刪除,而是將要刪除元素的位置用後面元素替代

void

deledata

(list *p,

int data)

p->len--

;//刪除之後元素個數-1

break;}

}}//用於刪除全部的重複數字

void

deledata1

(list *p,

int data)

p->len--

;//刪除之後元素個數-1

--i;

//break;}}

}//用於查詢該陣列中數字為3的值

void

finddata

(list *p,

int data)

}}

順序表初級

增刪改查 防止標頭檔案重複包含的時候重定義 因為結構體的定義 一般寫在標頭檔案中的 ifndef sxb h define sxb h struct student typedef student data struct sxb sxb createsxb 建立 bool insertsxb sxb...

C初級 雙向鍊錶

雙鏈表的頭head能找到下乙個節點a,節點a不能訪問頭head 對於鍊錶中指標指向問題的說明 1.在定義結構體b時,在結構體內部定義了乙個指向上一位置a的指標 也定義了指向下一位置的指標c 在 中,一般將head next c head b head pre a 2.在進行插入操作時,有結構體指標p...

c 初級 之 反轉鍊錶

以下為例 反轉乙個鍊錶 include includeusing namespace std struct link int main 以下是面向過程的思想,仍是c的思想,先做什麼再做什麼 最好寫乙個鍊錶的類,把這些操作都封裝起來,例項化物件後可以隨用隨調,安全性也更好,這就是物件導向了。p2 da...