執行效果
靜態順序表是只適用於我們已經了解到需要存多少資料,而一般我們都是用動態順序表,下面我給大家展示一下我所實現的動態順序表的**。
seqlist.h
#define _crt_secure_no_warnings 1
#pragma once
#include
#include
#include
#include
#include
//順序表的靜態儲存
//#define n 100
typedef
int sldatatype;
////typedef struct seqlist
//seqlist;
//順序表的動態儲存
typedef
struct seqlist
seqlist;
void
seqlistinit
(seqlist* psl)
;void
seqlistdestory
(seqlist* psl)
;void
checkcapicity
(seqlist* psl)
;void
seqlistpushback
(seqlist* psl, sldatatype x)
;void
seqlistpopback
(seqlist* psl)
;void
seqlistpushfront
(seqlist* psl, sldatatype x)
;void
seqlistpopfront
(seqlist* psl)
;int
seqlistfind
(seqlist* psl, sldatatype x)
;void
seqlistinsert
(seqlist* psl, size_t pos, sldatatype x)
;void
seqlisterase
(seqlist* psl, size_t pos)
;void
seqlistremove
(seqlist* psl, sldatatype x)
;void
seqlistmodify
(seqlist* psl, size_t pos, sldatatype x)
;void
seqlistprint
(seqlist* psl)
;void
seqlistbubblesort
(seqlist* psl)
;int
seqlistbinaryfind
(seqlist* psl, sldatatype x)
;void
seqlistremoveall
(seqlist* psl, sldatatype x)
;
seqlist.c#include
"seqlist.h"
//順序表的初始化
void
seqlistinit
(seqlist* psl)
psl->capicity =10;
psl->size =0;
}//釋放順序表
void
seqlistdestory
(seqlist* psl)
}//檢查順序表,看是否需要擴容
void
checkcapicity
(seqlist* psl)
memcpy
(ptmp, psl->array, psl->size *
sizeof
(sldatatype));
free
(psl->array)
; psl->array = ptmp;
psl->capicity = newcapicity;}}
//尾插
void
seqlistpushback
(seqlist* psl, sldatatype x)
//尾刪
void
seqlistpopback
(seqlist* psl)
//頭插
void
seqlistpushfront
(seqlist* psl, sldatatype x)
psl->array[0]
= x;
psl->size++;}
//頭刪
void
seqlistpopfront
(seqlist* psl)
psl->size--;}
//查詢某個元素
intseqlistfind
(seqlist* psl, sldatatype x)
}return-1
;}//在某個位置插入乙個元素
void
seqlistinsert
(seqlist* psl, size_t pos, sldatatype x)
psl->array[pos]
= x;
psl->size++;}
//在某個位置刪除乙個元素
void
seqlisterase
(seqlist* psl, size_t pos)
psl->size--;}
//移除乙個數
void
seqlistremove
(seqlist* psl, sldatatype x)
//在某個位置更改乙個數
void
seqlistmodify
(seqlist* psl, size_t pos, sldatatype x)
//展示順序表
void
seqlistprint
(seqlist* psl)
for(i =
0; i < psl->size; i++
)printf
("\n");
}//氣泡排序
void
seqlistbubblesort
(seqlist* psl)
if(count ==0)
}}}//二分查詢(時間複雜度:o(n) 空間複雜度 o(1))(只能是非遞迴)
intseqlistbinaryfind
(seqlist* psl,sldatatype x)
else
if(psl->array[mid]
> x)
else
if(psl->array[mid]
== x)
}return-1
;}//移除相同的乙個數字
void
seqlistremoveall
(seqlist* psl, sldatatype x)
else
} psl->size -
= count;
test.c#include
"seqlist.h"
void
menu()
void
test()
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
case10:
case11:
case12:
case13:
case0:
default
:printf
("選擇有誤!請重新選擇!\n");
程式設計師成長之旅 設計迴圈佇列
設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是...
程式設計師成長之旅 二分查詢
最終 溢位問題在迴圈體中,一般計算中間值middle時所用的是 middle left right 2 但是這種情況容易溢位,因為一旦left right超過所在型別的範圍的話,就會出現錯誤,為了不出現這種問題,我們引入了 middle left right left 2 邊界問題 迴圈體外的初始化...
程式設計師成長之旅 類和物件中篇
析構函式 拷貝建構函式 賦值運算子過載 const成員 取位址及const取位址運算子過載 如果乙個類中什麼都沒有,我們都知道它是空類,但是空類是不是什麼事情都不做,答案當然是否定的,它會生成6個預設函式。概念建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資...