数据结构(C语言版)-1.线性表

  • 特点
    • 存在唯一一个称为“第一个”的元素
    • 存在唯一一个称为“最后一个”的元素;
    • 除第一个元素外,序列中的每个元素只有一个直接前驱
    • 除最后一个元素外,序列中的每个元素只有一个直接后继
    • 数据元素的类型都是相同的

顺序表操作

  • SeqList.h
    #ifndef __SEQLIST_H__
    #define __SEQLIST_H__
    
    #define MAXSIZE 128
    typedef int datatype;
    typedef struct
    {
         
    	datatype data[MAXSIZE]; // 从下标1开始,即可以存放的位置:1~MAXSIZE-1
    	int len;
    }SeqList;
    
    // 顺序表的初始化
    SeqList* Init_SeqList();
    // 顺序表的创建
    void CreateSeqList(SeqList* L);
    // 顺序表的插入
    void Insert_SeqList(SeqList* L, int i, datatype x);
    // 顺序表的打印
    void print_SeqList(SeqList* L);
    // 顺序表的删除
    void Delete_SeqList(SeqList* L, int i);
    //顺序表查找
    int Location_SeqList(SeqList* L, datatype x);
    #endif // !1
    
    
    
  • SeqList.c
    #define _CRT_SECURE_NO_WARNINGS
    #include
    #include
    #include"SeqList.h"
    
    SeqList* Init_SeqList()
    {
         
    	/*
    		构造空顺序表
    	*/
    	SeqList* L = (SeqList*)malloc(sizeof(SeqList));
    	L->len = 0;
    	return L; // 注意这里是可以返回局部变量的,不能返回的是局部变量的引用,不要搞混了
    }
    
    
    void CreateSeqList(SeqList* L)
    {
         
    	int i = 0;
    	printf("Input length of list: ");
    	scanf("%d",&L->len);
    	printf("Input elements of List:\n");
    	for (i = 1; i <= L->len; i++)  // 注意data数组的下标是从0开始的
    		scanf("%d",&L->data[i]);
    }
    
    void Insert_SeqList(SeqList* L, int i, datatype x)
    {
         
    	if (L->len == MAXSIZE - 1)
    	{
         
    		printf("SeqList is full\n");
    	}
    	else 
    	{
         
    		if (i > L->len - 1 || i < 1)
    			printf("The position is invalid");
    		else 
    		{
         
    			L->len++;
    			int iTmp = L->len;
    			while (iTmp > i)
    			{
         
    				L->data[iTmp] = L->data[iTmp-1];
    				iTmp--;
    			}
    			L->data[i] = x;
    		}
    	}
    }
    
    void print_SeqList(SeqList* L)
    {
         
    	for (int i = 1; i <= L->len; i++)
    		printf("%d ",L->data[i]);
    	printf("\n");
    }
    
    void Delete_SeqList(SeqList* L, int i)
    {
         
    	if (i > L->len || i < 1)
    		printf("The position is invalid\n");
    	else 
    	{
         
    		while (i <= L->len)
    		{
         
    			L->data[i] = L->data[i + 1];
    			i++;
    		}
    		L->len--;
    	}
    }
    
    int Location_SeqList(SeqList* L, datatype x)
    {
         
    	/*
    	// 从前往后依次查找
    	if (L->len == 0)
    		printf("The SeqList is empty\n");
    	else
    	{
    		int i = 1;
    		while (i <= L->len)
    		{
    			if (L->data[i] == x)
    				return i;
    			i++;
    		}
    	}
    	*/
    	L->data[0] 

你可能感兴趣的:(数据结构C描述,数据结构,c语言,算法)