因为痛,所以叫青春

我有一个梦想:穷屌丝变身富屌丝
实验一 线性表的顺序表示与实现
 

 

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;
}

 

posted on 2012-09-20 22:06  Nice!  阅读(561)  评论(0编辑  收藏  举报