zoukankan      html  css  js  c++  java
  • c语言顺序表操作

    #include<stdio.h>
    #include<malloc.h>
    #include<stdlib.h>
    #define MAXSIZE 100
    typedef int ElemType;
    typedef struct SqList {
    	ElemType* data;
    	int length;
    }SqList;
    
    /*
    	顺序表的初始化
    */
    void InitSqList(SqList& L) {
    	L.data = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE);
    	if (!L.data)exit(-1);
    	L.length = 0;
    }
    
    /*
    	销毁顺序表
    */
    void DestroySqList(SqList& L) {
    	if (L.data)
    	{
    		free(L.data);
    	}	
    }
    
    /*
    	清空顺序表
    */
    void ClearSqList(SqList& L) {
    	L.length = 0;
    }
    
    /*
    	求顺序表的长度
    */
    int GetLength(SqList L) {
    	return L.length;
    }
    
    /*
    	判断顺序表是否为空
    */
    bool IsEmpty(SqList L) {
    	if (L.length == 0)
    	{
    		return true;
    	}
    	else {
    		return false;
    	}
    }
    
    /*
    	顺序表的取值(根据位置i获取相应位置元素的内容)
    */
    int GetElem(SqList L, int i, ElemType& e) {
    	if (i < 1 || i > L.length) return -1;
    	e = L.data[i - 1];
    	return 1;
    }
    
    /*
    	顺序表的查找与指定值e相同的数据元素位置
    */
    int LocateElem(SqList L, ElemType& e) {
    	for (int i = 0; i < L.length; i++)
    	{
    		if (L.data[i] == e) {
    			return i + 1;
    		}
    	}
    	return 0;
    }
    
    /*
    	顺序表的插入
    */
    int ListInsert_Sq(SqList& L, int i, ElemType e) {
    	if (L.length == MAXSIZE) return -1;
    	if (i < 1 || i > L.length + 1)return -1;// 1 2 3 4 5|| 可以在6号位置插入
    	for (int j = L.length - 1; j >= i - 1; j--)
    	{
    		L.data[j + 1] = L.data[j];
    	}
    	L.data[i - 1] = e;
    	L.length++;
    	return 1;
    
    }
    
    /*
    	顺序表的删除
    */
    int ListDelete_Sq(SqList& L, int i, ElemType& e) {
    	if (i < 1 || i > L.length) return -1;
    	for (int j = i; j < L.length; j++)
    	{
    		L.data[j - 1] = L.data[j];
    	}
    	L.length--;
    	return 1;
    }
    
    /*
    	输出测试
    */
    void Test(SqList L) {
    	for (int i = 0; i < L.length; i++)
    	{
    		printf("%d
    ", L.data[i]);
    	}
    }
    
    int main() {
    	SqList L;
    	InitSqList(L);
    	ListInsert_Sq(L, 1, 1);
    	ListInsert_Sq(L, 2, 2);
    	ListInsert_Sq(L, 3, 3);
    	ListInsert_Sq(L, 4, 4);
    	ListInsert_Sq(L, 5, 5);
    	ElemType e;
    	ListDelete_Sq(L, 3, e);
    	Test(L);
    	return 0;
    }
    
    我亦无他,惟手熟尔
  • 相关阅读:
    DELPHI开发LINUX包
    DELPHI开发LINUX的动态库
    中间件测试工具
    CENTOS7安装OPENSSL
    咏南跨平台中间件简介
    IdHTTPServer开发https服务器
    ServiceStack.Redis常用操作
    ServiceStack.Redis 之 IRedisTypedClient<第四篇>
    Redis常用命令速查 <第二篇>
    ServiceStack.Redis之IRedisClient<第三篇>
  • 原文地址:https://www.cnblogs.com/AsuraPlus/p/15388021.html
Copyright © 2011-2022 走看看