zoukankan      html  css  js  c++  java
  • 数据结构

    《数据结构》严蔚敏

    头文件SQlist.h

     1 #ifndef SQlist_H_INCLUDED
     2 #define SQlist_H_INCLUDED
     3 #include<stdio.h>
     4 #define OK 1
     5 #define ERROR -1
     6 #define TRUE 1
     7 #define FALSE 0
     8 
     9 #define MAXSIZE 100 /* 存储空间初始分配量 */
    10 #define ListCreaty 10 /* 分配增量 */
    11 typedef int ElemType;   /* ElemType类型根据实际情况而定,这里假设为int */
    12 typedef int Status;     /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
    13 
    14 typedef struct
    15 {
    16     ElemType *data; /* 数组,存储数据元素 */
    17     int length;   /* 线性表当前长度 */
    18     int size;    /*线性表容量*/
    19 }SqList;
    20 Status InitList(SqList&);
    21 Status DestoryList(SqList&);
    22 Status ListLength(SqList);
    23 Status ListEmpty(SqList);
    24 Status GetElem(SqList,int, ElemType&);
    25 Status InsertSqList(SqList&, int, ElemType);
    26 Status FoundElem(SqList, ElemType);
    27 Status DeleteList(SqList&, int, ElemType&);
    28 void ClearList(SqList&);
    29 #endif

    函数实现

      1 #include"SQlist.h"
      2 #include<malloc.h>
      3 #include<iostream>
      4 using namespace std;
      5 /* 初始化顺序线性表 */
      6 Status InitList(SqList&L)
      7 {
      8     L.data = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
      9     if (!L.data)
     10     {
     11         return ERROR;
     12     }
     13     L.size = MAXSIZE;
     14     L.length = 0;
     15     return OK;
     16 }
     17 /*销毁元素*/
     18 Status DestoryList(SqList&L)
     19 {
     20     if (L.length)
     21     {
     22         free(L.data);
     23     }
     24     L.data = NULL;
     25     L.length = 0;
     26     return OK;
     27 }
     28 /*清空线性表*/
     29 void ClearList(SqList&L)
     30 {
     31     L.length = 0;
     32 }
     33 /*判断为空*/
     34 Status ListEmpty(SqList L)
     35 {
     36     if (L.length)
     37     {
     38         return 0;
     39     }
     40     return 1;
     41 }
     42 /*插入第i个位置的元素*/
     43 Status InsertSqList(SqList&L, int i, ElemType e)
     44 {
     45 
     46     if (i<1 || i>L.length + 1)
     47     {
     48         cout << "NO" << endl;
     49         //return ERROR;
     50     }
     51     if (L.length > L.size)
     52     {
     53         ElemType *newbase = (ElemType*)realloc(L.data, sizeof(ElemType) * (L.size+MAXSIZE));
     54         if (!newbase)
     55         {
     56             return ERROR;
     57         }
     58         L.data = newbase;
     59         L.size += MAXSIZE;
     60     }
     61     if (L.length != 0)
     62     {
     63         ElemType *q, *p;
     64         q = &L.data[i - 1];
     65         p = &L.data[L.length - 1];
     66         for (; p >= q; p--)
     67         {
     68             *(p + 1) = *p;
     69         }
     70         *q = e;
     71         L.length++;
     72     }
     73     else
     74     {
     75         L.data[L.length] = e;
     76         L.length++;
     77     }
     78     return OK;
     79 }
     80 Status GetElem(SqList L, int i, ElemType& e)
     81 {
     82     if (i<0 && i>L.length)
     83         return 0;
     84     else
     85     {
     86         e = L.data[i - 1];
     87     }
     88     return 1;
     89 }
     90 Status ListLength(SqList L)
     91 {
     92     return L.length;
     93 }
     94 Status FoundElem(SqList L, ElemType e)
     95 {
     96     int i;
     97     for (i = 0; i < L.length; i++)
     98     {
     99         if (L.data[i] == e)
    100         {
    101             return i+1;
    102         }
    103     }
    104     return 0;
    105 }
    106 Status DeleteList(SqList&L, int i, ElemType& e)
    107 {
    108     if (i<1||i>L.length)
    109     {
    110         return ERROR;
    111     }
    112     ElemType *p = &L.data[i - 1];
    113     ElemType *q = L.data + L.length - 1;
    114     e = *p;
    115     for (; p <= q; p++)
    116     {
    117         *(p - 1) = *p;
    118     }
    119     L.length--;
    120     return OK;
    121 }
  • 相关阅读:
    [再寄小读者之数学篇](2014-05-27 偏导数的计算)
    [再寄小读者之数学篇](2014-05-27 积分估计)
    [再寄小读者之数学篇](2014-05-27 二阶矩阵的不等式)
    [再寄小读者之数学篇](2014-05-27 特征值估计)
    [家里蹲大学数学杂志]第039期高等数学习题集
    [家里蹲大学数学杂志]第038期历史上最伟大的10个方程
    [家里蹲大学数学杂志]第037期泛函分析期末试题
    [再寄小读者之数学篇](2014-05-26 计算行列式)
    [家里蹲大学数学杂志]第036期泛函分析期末试题
    [再寄小读者之数学篇](2014-05-25 矩阵的交换子)
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/5440302.html
Copyright © 2011-2022 走看看