靜態順序表的實現(陣列實現)
#include"SeqList.h" void InitSeqList(SeqList *seq) //1. 初始化(無需將每個元素置0,只需設定有效元素個數就可以) { assert(seq); seq->size = 0; } void AddBack(SeqList *seq, TypeData data) //2. 尾插 { assert(seq); if (seq->size >= SeqMaxLenth) { return; } seq->size++; seq->Data[seq->size - 1] = data; } void DelBack(SeqList *seq) //3. 尾刪 { assert(seq); if (seq->size <= 0) { return; } seq->size--; } void AddFront(SeqList *seq, TypeData data) //4. 頭插 { assert(seq); if (seq->size >= SeqMaxLenth) { return; } seq->size++; int i = seq->size - 1; for (; i > 0; i--) { seq->Data[i] = seq->Data[i - 1]; } seq->Data[0] = data; } void DelFront(SeqList *seq) //5. 頭刪 { assert(seq); if (seq->size <= 0) { return; } size_t i=0; for (; i < seq->size-1; i++) { seq->Data[i] = seq->Data[i + 1]; } seq->size--; } TypeData Get(SeqList *seq, size_t pos) //6. 讀任意位置元素 { assert(seq); if (pos>seq->size-1) { return -1; //若位置無效,則返回-1 } return seq->Data[pos]; } void Mulity(SeqList *seq, size_t pos, TypeData data) //7. 修改任意位置元素 { assert(seq); if (pos > seq->size - 1) { return; } seq->Data[pos] = data; } size_t Search(SeqList *seq, TypeData data) //8. 查詢指定元素值的下標 { assert(seq); size_t i = 0; for (; i < seq->size; i++) { if (seq->Data[i] == data) return i; } return -2; //若沒有找到,則返回-2 } void Insert(SeqList *seq, size_t pos, TypeData data) //9. 在任意位置插入元素 { assert(seq); if (seq->size >= SeqMaxLenth) { return; } seq->size++; size_t i = seq->size-1; for (; i >pos; i--) { seq->Data[i] = seq->Data[i -1]; } seq->Data[pos] = data; } void SeqListPrint(SeqList *seq) //列印順序表 { assert(seq); size_t i = 0; for (; i < seq->size; i++) { printf("[%p:],[%d]\t", &seq->Data[i], seq->Data[i]); } printf("\n"); } void Test1() //測試 { SeqList seq; size_t tmp=0; InitSeqList(&seq); AddBack(&seq, 1); AddBack(&seq, 2); AddBack(&seq, 3); AddBack(&seq, 4); SeqListPrint(&seq); DelBack(&seq); SeqListPrint(&seq); AddFront(&seq, 4); SeqListPrint(&seq); DelFront(&seq); DelFront(&seq); SeqListPrint(&seq); Mulity(&seq, 0, 8); SeqListPrint(&seq); tmp=Get(&seq, 3); printf("%d\n", tmp); tmp = Get(&seq, 1); printf("%d\n", tmp); tmp=Search(&seq, 3); printf("%d\n", tmp); tmp = Search(&seq,6); printf("%d\n", tmp); Insert(&seq, 1, 0); Insert(&seq, 2, 0); Insert(&seq, 0, 0); SeqListPrint(&seq); }
- 為外部提供的介面seqlist.h
#ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<assert.h> #include<stdio.h> #include<stdlib.h> #define SeqMaxLenth 1000 typedef int TypeData; typedef struct SeqList{ TypeData Data[SeqMaxLenth]; //靜態順序表資料 size_t size; //有效元素個數 }SeqList; void InitSeqList(SeqList *seq); void AddBack(SeqList *seq, TypeData data); void DelBack(SeqList *seq); void AddFront(SeqList *seq, TypeData data); void DelFront(SeqList *seq); TypeData Get(SeqList *seq, size_t pos); size_t Search(SeqList *seq, TypeData data); void Mulity(SeqList *seq, size_t pos, TypeData data); void SeqListPrint(SeqList *seq); void Test1(); #endif
- 外部測試程式碼main.c
#include"SeqList.h"
int main()
{
Test1();
system("pause");
return 0;
}
總結如下:
相關推薦
靜態順序表的實現(陣列實現)
#include"SeqList.h" void InitSeqList(SeqList *seq) //1. 初始化(無需將每個元素置0,只需設定有效元素個數就可以) { assert(seq); seq->size = 0; } void AddBack(SeqList *seq, Ty
順序表應用5:有序順序表歸併(資料結構)
順序表應用5:有序順序表歸併 Time Limit: 100 ms Memory Limit: 880 KiB Submit Statistic Problem Description 已知順序表A與B是兩個有序的順序表,其中存放的資料元素皆為
線性表之順序表操作(已完結)
考研408資料結構線性表複習;有任何問題私我#include<iostream> #include<algorithm> const int initlength = 100; ///順序表的初始長度 using namespace std
資料結構——順序表操作(C語言實現)
//順序表list #include"stdio.h" #define maxsize 15 typedef struct{ int a[maxsize]; int size; }list; //建立 void create(lis
順序表的插入操作原理及實現(C語言)詳解
順序表中存放資料的特點和陣列這種資料型別完全吻合,所以順序表的實現使用的是陣列。換句話說,順序表中插入元素問題也就等同於討論如何向陣列中插入資料。 因此,順序表中插入資料元素,無非三種情況: 在表頭插入; 在表的中間某個位置插入; 直接尾隨順序表,作為表的最後一個元素; 無論在順序表的什麼位置插
java實現將一列亂序的字元,'a','c','u','b','e','p','f','z',排序後並按照英文字母表的逆序輸出(陣列排序)
實現: package com.array.test; import java.util.Arrays; import java.util.Scanner; /** * 將一列亂序的字元,'a','c','u','b','e','p','f','z',排序後並按照英文字母表的逆
java實現將一列亂序的字元,'a','c','u','b','e','p','f','z',排序後並按照英文字母表的逆序輸出(陣列排序)
實現: package com.array.test; import java.util.Arrays; import java.util.Scanner; /** * 將一列亂序的字元,'a',
C++模板的實現(模板函式和模板類,附帶模板實現順序表和連結串列程式碼)
模板 當我們實現一個交換函式時,我們可以寫成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; } 這裡只能交換兩個整數,當我們
鄰接表與逆鄰接表(陣列實現)
配一張圖: 比如H[1] 下面有四個數(-1也是的) -1,0, 3, 5; 就說明A[0] 是點 1 的弧頭, A[3] 是 1 的弧頭, A[5] 也是1 的弧頭; 但是一個數組的一個小單元之能存一個數怎麼辦呢, 這個時候就是next的用處了; 我們讓next[5]
用c++實現 c++順序表的實現(採用模板)
函式實現資料的插入(頭插&&尾插)、刪除(頭刪&&尾刪)、查詢、按位置插入、按位置刪除、順序表求長、順序表清除、順序表摧毀、資料的逆置以及資料排序 main函式 #include"SeqList.h"//順序表 void main() {
順序表的實現(C語言)
/********************* * 指向結構體變數的指標作函式引數 * ***********************/ #include<stdio.h> #define MAXSIZE 100 typedef int datatype; ty
佇列的順序表實現(C語言)
#include <stdio.h> #include <stdlib.h> struct QueueRecord; typedef struct QueueRecord* Queue; typedef int ElementType;
資料結構——線性表的順序表示和實現(c語言)
PS:資料結構(C語言版)——清華大學出版社, 2.1節程式碼實現#include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define E
棧的數組和鏈表實現(Java實現)
javascrip search 分享圖片 sys blog inter () 結果 length 我以前用JavaScript寫過棧和隊列,這裏初學Java,於是想來實現棧,基於數組和鏈表。 下面上代碼: 1 import java.io.*; 2 //用接口來
線性表基本操作的實現(合並)
typedef real 不變 names base ++ 元素 一個 修改元素 //實現順序表的建立、初始化、插入、刪除、修改、普通合並、有序合並 #include<iostream> #include<stdio.h> #include<
線段樹模板(陣列實現)
首先是基本定義環節 因為線段樹左子節點和右子節點在建構函式的時候比較常用 我們就把這兩個語句簡化一下; #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 const int maxn=5008;
《大話資料結構4》—— 佇列的順序儲存結構 (迴圈佇列)—— C++程式碼實現
佇列 ● 佇列的概念: 佇列(簡稱作隊,Queue)也是一種特殊的線性表,佇列的資料元素以及資料元素間的邏輯關係和線性表完全相同,其差別是線性表允許在任意位置插入和刪除,而佇列只允許在其一端進行插入操作在其另一端進行刪除操作。 佇
UVA-12657 Boxes in a Line (模擬,雙向連結串列(陣列實現))
第一次對陣列實現雙向連結串列的練習,理解了發現數組實現真方便… 題目:UVA-12657 題目描述: 你有n個盒子在桌子上的一條線上從左到右編號為1……n。你的任務是模擬四種操作 1 X Y 移動盒子編號X到盒子編號Y的左邊(如果X已經在Y的左邊了就忽略) 2 X Y 移
2018-11-12單鏈表的實現(Java實現)
package singlelinklist; public class Node { int item; Node next; public Node(int item) { this.item = item; this.next = nul
java實現最大堆(陣列方式)
最大堆、最小堆其實就是優先佇列,每次取出的元素都是最大或最小的。本部落格主要用陣列實現最大堆,最小堆的實現原理也是一樣的。當然,也可以用list集合來儲存元素,方便很多,不用事先設定容量的大小。但還是想用原生的方式來實現一下。具體的註釋已經嵌入到程式碼當中了。 package heap; //