1. 程式人生 > >資料結構:順序表的操作

資料結構:順序表的操作

順序表:是一種線性結構,申請連續的記憶體空間,資料結構應有儲存資料的一維陣列和順序表的長度和最大容量。

功能:順序表的初始化,插入節點,刪除節點,和列印節點

#include<stdio.h>

#define SIZE 5
typedef struct Table{
        int *head; //動態陣列
        int length;  //長度
        int size;  
}SeqTable;

//初始化
void Init(SeqTable* Ta){

        //申請記憶體空間
       if((Ta->head = (int *)malloc(SIZE*sizeof(int))) == NULL) {
               printf("not enough!");
               exit(0);
       }

       Ta->length = 0;
       Ta->size = SIZE; 
}

//插入元素
void Insert(SeqTable* Ta, int data){
        if(Ta->length >= Ta->size) return;
        else {
                Ta->head[Ta->length] = data;
                Ta->length += 1;      
        }
}

//刪除節點
void delete(SeqTable* Ta, int data){
        int i =0;
        int j = Ta->length -1;
		int flag =0;
        if(Ta){
                //先找到該元素
                for(i=0; i<  Ta->length; i++){
                        if(Ta->head[i] == data){
                                //將元素前移
                                while(j > i){
                                        Ta->head[i-1] = Ta->head[i];  
                                        j--;
                                }
								flag = 1;
                                Ta->length -= 1;
                                break;
                        }
                }
                //沒有找到
				if(!flag) printf("the deletedata not exited!\n");
                //lenght-1
        }
}

//輸出
void print(SeqTable* TA){
        int i=0;
        for(i=0; i< TA->length; i++){
                printf("%d ", TA->head[i]);
        }
        printf("\n");
}

int main(){
        int i=0;
        SeqTable Ta;
        int data =0;

        //任意輸入選項
        printf("1.初始化\n");
        printf("2.插入節點\n");
        printf("3.刪除節點\n");
        printf("4:結束程式\n");


        while(1){
                printf("請輸入你的選項:");
                scanf("%d",&i);
                switch(i){
                        case 1:
                                Init(&Ta);
                                break;
                        case 2: 
                                printf("請輸入你插入的資料:");
                                scanf("%d",&data);
                                Insert(&Ta, data);
                                break;
                        case 3:
                                printf("請輸入刪除的資料:");
                                scanf("%d",&data);
                                delete(&Ta,data);
                                break;
                        case 4:
                                exit(0);
                        default: 
                                printf("no the function!");
                                exit(0);
                }


                print(&Ta);
                printf("\n");
        }
}

相關推薦

資料結構——順序操作(C語言實現)

//順序表list #include"stdio.h" #define maxsize 15 typedef struct{ int a[maxsize]; int size; }list; //建立 void create(lis

資料結構 順序 操作

此順序表是以陣列下標為1開始放入元素的。。。 #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <

資料結構:順序和連結串列的簡單操作

用陣列正序初始化連結串列 初始定義 #include <cstdlib> #include <iostream> using namespace std; typedef int ElemType; typedef int Status;

資料結構--順序合併操作

線性表La和Lb中的元素按值非遞減排列,歸併La和Lb得到新的線性表Lc,Lc的數值也按非遞減排列 Uoion_Sort_2.c 函式 #include "c1.h" #include "c

資料結構順序相關基本操作練筆

#include<stdio.h> #include<stdlib.h> #define MAX 30 #define LIST_INCREMENT 40 typedef struct{ int lenth; int listsize; int *base; }s

資料結構順序基本操作(c語言程式碼)

順序表計算機內部儲存一張線性表是用一組連續地址記憶體單元,這種儲存結構即為順序儲存結構,這種結構下的線性表叫順序表。順序表有兩種定義方法:                                    1.靜態定義                           

資料結構:順序操作

順序表:是一種線性結構,申請連續的記憶體空間,資料結構應有儲存資料的一維陣列和順序表的長度和最大容量。 功能:順序表的初始化,插

資料結構 順序操作

程式碼如下: #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #define STACK_INIT_SIZE 10 using name

資料結構-順序(java)萌新寫的希望各位大佬提提意見

package bh.shy.list; import bh.shy.listconst.ListConst; public class MyList { // 定義一個數組T private T[] t; private int length; private int list

資料結構順序元素整體互換和單鏈插入練習

線性表用順序儲存,設計一個演算法,用盡可能少的輔助儲存空間將順序表中前m個元素與後n個元素進行整體互換,即將線性表 (a1,a2,a3,......,am,b1,b1,b3,......,bn)   (b1,b2,b3,.......,bn,a1,a2,a3,.......,am)

《java常用演算法手冊》 第二章 資料結構 順序 單鏈

資料元素:例如單向連結串列的一個節點  擁有 頭指標和資料兩個資料組成   四種儲存方式 :        

資料結構-單鏈操作

// // main.c // Link_List // // Created by Smallflyfly on 2018/11/9. // Copyright © 2018 fang. All rights reserved. // #include <stdio.h>

資料結構-順序驗證實驗

SeqList.h #ifndef SeqList_H #define SeqList_Hconst int MaxSize=18; class SeqList { public: SeqList(){length=0;} SeqList(int a[],int n);

資料結構-順序(陣列)迴圈左移(2010聯考真題)

王道18頁,2010年計算機聯考真題 n(n>1)個整數放到一維陣列R中,將R中儲存的順序序列迴圈左移p(0<p<n)個位置, 即R中資料由(X0,X1...Xn-1)變換為(Xp,Xp+1...Xn-1,X0,...Xp-1) 思想:動態建立大小為p的輔

資料結構-順序

線性結構的特點是:在資料元素的非空有限集中,存在一個唯一的被稱作為第一個的資料元素,存在唯一的一個被稱作最後一個的資料元素,除第一個外,集合中的每個資料元素均只有一個前驅,出最後一個外,集合中每個資料元素均只有一個後繼。 關係採用順序映像,形成順序儲存結構,稱之為順序表。

資料結構--順序實現資料處理系統(C語言)

#include<stdio.h> #include<stdlib.h> #define MAXSIZE 10 #define OK 1 #define ERROR 0 #define true 1 typedef int Status;

嚴蔚敏版資料結構順序

嚴蔚敏版資料結構是本好書! 少廢話咯,直接上程式碼研究吧! 程式碼不難,重在理解 #include<stdio.h> #include<stdlib.h> #include<string.h> #define OK 1 #define

資料結構——順序

順序儲存的線性表(順序表) a.初始化 b.插入節點 c.遍歷   優點:訪問隨機 缺點:需要大片連續記憶體,插入刪除需要挪動元素,效率低 程式碼實現: typedef struct ARRAY //用於管理順序表的資料型別 { int * p

資料結構--順序

seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #define MAXSIZE 100 typedef int data_t; typedef struct{ data_t data[MAXSIZE

資料結構-順序的實現以及一些功能(c語言版本)

#define MAXSIZE 100 //MAXSIZE為線性表可能的最大長度 #include<stdio.h> typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; int length