zoukankan      html  css  js  c++  java
  • 线性表最简单的表示

    #include <stdio.h>
    #include <stdlib.h>
    #define list_maxsize 100
    typedef int ElemType ;
     struct  List
    {
        ElemType data[list_maxsize];  
        int length;
    } ;

    /* 初始化锭表  */
    void InitList(struct  List L)
    {
        /*     设置长度为0,其实就是一个空链表  */
        L.length= 0 ;
    }

    /* 获得链表长度  */
    int getLength(struct List L)
    {
        return L.length;
    }
    /* 向链表中添加元素  */
    struct List InsertList(struct List L , int pos, ElemType e)
    {
        int i ;
        if(pos < 1 || pos > L.length + 1)
        {    
            /* 若pos越界则插入失败 */
            exit(1);
        }
        /* 向右移动元素  */
         for(i = L.length - 1; i >= pos-1; i--)
        {
            L.data[i + 1] = L.data[i];
        }
         L.data[pos - 1] = e;  
         L.length++;
         return L;
    }

    struct List InsertLast(struct List L,ElemType e)
    {
        L.data[L.length]= e ;
        L.length++;
        return L;
    }

    /* 删除链表中第I个元素  */
    struct List DeleteList(struct List L ,int pos)
    {
        ElemType temp;
        int i;
         if(pos < 1 || pos > L.length){        /* pos越界则删除失败 */
            printf("pos值越界,不能进行删除操作! ");
            exit(1);
        }
        temp = L.data[pos-1];
        for(i=pos;i<L.length;i++)
            L.data[i-1] = L.data[i];
        L.length--;
        return L;
    }

    /* 按值删除 */
    struct List DeleteListByValue(struct List L ,ElemType x)
    {
        int i,j;
        for(i=0;i<L.length;i++){
            if(L.data[i]==x){
                break;
            }
        }
        if(i==L.length){/* 表明没有要删除的值,则直接返回  */
            exit(1);
        }
        for(j=i+1;j<L.length;j++){
           L.data[j-1] = L.data[j];
        }
        L.length--;
        return L;
    }

    /* 指定在第i个位置更新值X  */
    struct List UpdateList(struct List L,int i,ElemType x)
    {
        if(i<1 || i>L.length){
           exit(1);
        }
        L.data[i-1] = x ;
        return L;
    }

    /* 指定相应的值,修改为新的值 */
    struct List UpdateListByValue(struct List L , ElemType oldvalue , ElemType newvalue)
    {
        int i ;
        for(i=0;i<L.length;i++)
        {
            if(L.data[i]==oldvalue){
               break;
            }
        }
        if(i==L.length){
            exit(1);
        }
        L.data[i] = newvalue;
        return L ;
    }

    /* 值排序 */
    struct List SortList(struct List L)
    {
        int temp;
        int i;
        for(i=0;i<L.length;i++)
        {
            if(L.data[i]<L.data[i+1])
            {
                temp = L.data[i];
                L.data[i+1] =L.data[i];
                L.data[i] =temp;
            }
        }
        return L;
    }

    /* 显示链表所有信息  */
    void Display(struct List L)
    {
        int i;
        for(i=0;i<L.length;i++)
        {
            printf("%d ",L.data[i]);
        }    
        printf("\n");
    }

    /*主函数   */
    main()
    {
         struct List newList;
         int i ;
         int array[5]={11,12,13,14,15};
    /*     初始化链表  */
         for(i=0;i<5;i++)
        {
            newList.data[i] = array[i];
            newList.length++;
        }    
        /* 在链表中第2个位置上插入一个34的值  */
        L = InsertList(newList,4,64);
        /* 显示链表中的值  */
        Display(L);
        /* 按下标删除  */
        L = DeleteList(L,2);
        Display(L);
        /* 按值删除链表内容  */
        L = DeleteListByValue(L,13);
        Display(L);
        /* 更新值  */
        L = UpdateList(L,4,88);
        Display(L);
        
        /*指定的位置上修改该值 */
        L = UpdateListByValue(L,88,18);

        Display(L);

     }

      每当第一次看数据结构的时候,总之不知道如何看起,一来就是指针,自己看了大半天,也没有弄个明白!所以一气之下,用了这种方式先结构数组的方式写一个, 之后再改进,再把这种理解的方式改成为指针,其实数据结构,无论是什么语言都可以写的!只是一般情部下用C或C++写是因为可以简单的描述,同时也使用了 指针的特性,如果有不太懂、或不太明白指针的朋友,不防先看看这个案例,也许对你理解有帮助。你把这案例理解透了,再改写自己的代码,把它写在为指针的方 式,到时就不困难了,加油吧!正在学习数据结构的同志们,再过几年就是我们80后人的天下了,努力!吃透,有时真的很辛苦,坚持就是胜利。这个案例只适合 初学者, 有不好的地方,请大家理解!我也是初学者!只不过先前做过.Net方面的开发!以前没有学过数据结构。

     

  • 相关阅读:
    Sql Server中暂停命令
    优化SQL Sever查询语句的几个要点
    SQL Server 常用日期查询语句
    Android开发环境配置
    java实验报告(实验一)
    java实验报告(实验二)
    学习java的一点体会
    [已解决]求助:vs2003用代码实现excel的设置
    关于webform信息提示框
    DataGrid按钮事件的触发
  • 原文地址:https://www.cnblogs.com/long88/p/1648032.html
Copyright © 2011-2022 走看看