順序表是乙個線性表,它是由一段連續的儲存單元來依次儲存資料元素的線性結構。
下面是**和一些難點解釋
.h檔案
#pragma once
#ifndef _seqlist_h_
#define _seqlist_h_
#include
#define max 10
typedef int typedata;
typedef struct seqlist
seq;
void test(seq* p);
void init_seqlist(seq* pseq);//初始化
void pushback_seqlist(seq* pseq, typedata data);//尾插
void popback_seqlist(seq* pseq);//尾刪
int empty(seq* pseq);//判空
void pushfront_seqlist(seq* pseq, typedata data);//頭插
void popfront_seqlist(seq* pseq);//頭刪
void eraseinser_seqlist(seq* pseq, int pos, typedata data);//任意位置插入
void erasepop_seqlist(seq* pseq, int pos);//任意位置刪除
int search_seqlist(seq* pseq, typedata data);//在順序表中查詢
void del_firstdata(seq* pseq, typedata data);//刪除第乙個值為data的資料
void del_alldata(seq* pseq, typedata data);//刪除所有值為data的資料
void sort_seqlist(seq* pseq);//排序(選擇排序)
#endif//_seqlist_h_
.c檔案
#include"seqlist.h"
#include#include
//初始化
void init_seqlist(seq *pseq)
void pushback_seqlist(seq* pseq, typedata data)//尾插
pseq->arr[pseq->size] = data;
pseq->size++;
}int empty_seqlist(seq* pseq)//判空
void popback_seqlist(seq* pseq)//尾刪
pseq->size--;
}void pushfront_seqlist(seq* pseq, typedata data)//頭插
for (i; i >= 0; --i)
pseq->arr[i - 1] = pseq->arr[i];
pseq->arr[0] = data;
pseq->size++;
}void popfront_seqlist(seq* pseq)//頭刪
for (size_t i = 1; i < pseq->size; ++i)
pseq->arr[i - 1] = pseq->arr[i];
pseq->size--;
}void eraseinser_seqlist(seq* pseq, int pos, typedata data)//任意位置插入
if ((pos >= pseq->size) || (pos < 0))
for (i; i >= pos; --i)
pseq->arr[i] = pseq->arr[i - 1];//搬移元素
pseq->arr[pos] = data;//將data插入到要插入的位置
pseq->size++;
}void erasepop_seqlist(seq* pseq, int pos)//任意位置刪除
if ((pos >= pseq->size) || (pos < 0))
for (i; i < pseq->size; ++i)
pseq->arr[i] = pseq->arr[i+1];//搬移元素
pseq->size--;
}int search_seqlist(seq* pseq, typedata data)///查詢
return -1;
}void del_firstdata(seq* pseq, typedata data)//刪除第乙個為data的值
void del_alldata(seq* pseq, typedata data)//刪除所有值為data的資料
pseq->size - count;
}void sort_seqlist(seq* pseq)//排序(選擇排序)
if (maxpos != end)
if (minpos != begin)
++begin;//begin標籤往後移
--end;//end標籤往前移
此處刪除所有元素為data的資料用的是上圖中c方法;a方法時間複雜度太大;b方法利用空間換時間,不太理想;c方法相對前兩個方法來說比較巧妙。
以下是解析排序:
「` void sort_seqlist(seq* pseq)//排序(選擇排序)
if (maxpos != end)
if (minpos != begin)
++begin;//begin標籤往後移
--end;//end標籤往前移
靜態順序表
在書上看到的,學習學習。題目 建立乙個靜態的順序表存放整數,大小為10,完成以下操作。1 輸入6個整數,列印出順序表中的內容,並顯示表中的剩餘的空間個數。2 在順序表中的第3個位置插入元素0,列印出順序表中的內容,並顯示表中剩餘的空間個數。3 再試圖插入表中第11個位置整數0,程式提示超出範圍。4 ...
靜態順序表
最近在學習資料結構的單鏈表部分,於是寫了乙個靜態順序表做練習。實現了對其初始化 新增 更改 刪除等功能的實現。seqlist.h pragma once define seq list ifdef seq list include include include define maxsize 100...
靜態順序表
順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。include stdio.h include stdlib.h elemtyp...