zoukankan      html  css  js  c++  java
  • 实验一 线性表的顺序表示与实现

     
    View Code
    实验一  线性表的顺序表示与实现
    实验目的
    掌握线性表的顺序存储结构;
    验证顺序表及其基本操作的实现;
    掌握数据结构及算法的程序实现的基本方法。
    实验内容
    建立含有若干个元素的顺序表;
    对已经建立的顺序表实现插入、删除、查找、合并等基本操作。
    #include<stdio.h>
    #include<stdlib.h>
    #define OK 1
    #define TRUE 1
    #define FLASE 0
    #define ERROR 0
    #define INFEASIBLE -1
    #define OVERFLOW -2
    #define LIST_INIT_SIZE 100#define LISTINCREMENT 10
    typedef int Status;
    typedef struct
    {
        int *elem;
        int lenth;
        int listsize;
    }Sqlist;
    Status InitList_Sqlist(Sqlist *L)
    {
        (*L).elem = (int *)malloc(LIST_INIT_SIZE*sizeof(int));
        if(!(*L).elem) exit(OVERFLOW);
        (*L).lenth = 0;
        (*L).listsize = LIST_INIT_SIZE;
        return OK;
    }
    int greatelist_sq(Sqlist *L)
    {
        int i;
        printf("请输入数据\n");
        for(i = 0;i < (*L).lenth; i++)
        {
            scanf("%d",&(*L).elem[i]);
        }
        return OK;
    }
    Status listinsert_sq(Sqlist *L,int i,int e)
    {
        int *p, *q, *newbase;
        if(i < 1 || i > (*L).lenth) return ERROR;
        if((*L).lenth >= (*L).listsize)
        {
            newbase = (int *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(int));
            if(!newbase) exit(OVERFLOW);
            (*L).elem = newbase;
            (*L).listsize += LISTINCREMENT;
        }
        q = &((*L).elem[i-1]);
        for(p=&((*L).elem[(*L).lenth-1]);p >= q;--p)
                *(p+1) = *p;
            *q = e;
            ++(*L).lenth;
        return OK;
    }
    Status listdelete_sq(Sqlist *L,int i,int &e)
    {
        int *p, *q;
        if(i < 1||i > (*L).lenth) return ERROR;
        p = &((*L).elem[i-1]);
        e = *p;
        q = (*L).elem+(*L).lenth-1;
            for(++p;p <= q;++p)
                *(p-1) = *p;
        --(*L).lenth;
        return OK;
    }
    void output(Sqlist *L)
    {
        printf("输出序列为:\n");
        int i;
        for(i = 0;i < (*L).lenth; i++)
            printf("%d ",(*L).elem[i]);
        printf("\n");
    }
    int main()
    {
        int i, n, e;
        Sqlist L;
        InitList_Sqlist(&L);
        printf("\n");
        scanf("%d",&n);
        L.lenth = n;
        greatelist_sq(&L);
        output(&L);
        scanf("%d%d",&i,&e);
        listinsert_sq(&L,i,e);
        output(&L);
        scanf("%d",&i);
        e = 0;
        listdelete_sq(&L,i,e);
        printf("被删除的元素为第%d位的%d\n",i, e);
        output(&L);
        return 0;
    }
  • 相关阅读:
    使用 mysql_random_data_load 生成随机数据
    TeamViewer 运行 AlterID 时候报错Cloud not create a fake UUID
    1.6 在WHERE子句中引用取别名的列
    本地登录多实例mysql ,默认登录数据库问题
    统计前10位的占用空间较大的目录
    Oracle查看用户权限
    [LeetCode]Binary Tree Preorder Traversal
    [LeetCode]Insertion Sort List
    [LeetCode]Implement strStr()
    [LeetCode]Remove Element
  • 原文地址:https://www.cnblogs.com/SDUTYST/p/2696040.html
Copyright © 2011-2022 走看看