数据结构:顺序表的操作

只愿长相守 提交于 2019-11-29 08:02:27

顺序表:是一种线性结构,申请连续的内存空间,数据结构应有存储数据的一维数组和顺序表的长度和最大容量。

功能:顺序表的初始化,插入节点,删除节点,和打印节点

#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");
        }
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!