现在的位置: 首页 > 综合 > 正文

线性表的各种操作

2017年12月19日 ⁄ 综合 ⁄ 共 1685字 ⁄ 字号 评论关闭
#include"stdio.h"
#define ElemType int
#define MAX 10
typedef struct
{
    ElemType data[MAX];
    int last;
}List;
int search(int i,List list1)
{
    List list=list1;
    if(i>list.last)
    {
        printf("越界。查找失败。\n");
        return -100;
    }
    //printf("查找成功,list.data[%d]位置的值是%d\n",i,list.data[i]);
    return list.data[i];
}
int insert(List *list1,int i,int a)
{
    int j=0;
    List *list=list1;
    if(i>list->last)
    {
        printf("插入位置不合法\n");
        return -100;//FAILED
    }
    if(i==list->last)
    {
        list->last++;
        list->data[list->last]=a;
        return 100;//SUCCESS
    }
    list->last++;
    for(j=list->last;j>i;j--)
    {
        list->data[j]=list->data[j-1];
    }
    list->data[i]=a;
    return 100;//SUCCESS
}
int deleteValue(List *list1,int i)
{
    List *list=list1;
    if(i>list->last)
    {
        printf("越界!!!\n");
        return -100;
    }
    for(int j=i;j<list->last;j++)
    {
        list->data[j]=list->data[j+1];
    }
    list->last--;
    return 0;
}
int sum(List *list)
{
    int s=0;
    if(list->last==0)
        return 0;
    for(int i=0;i<list->last;i++)
    {
        s=s+(list->data[i]);
        //i++;
    }
    return s;
}
void main()
{
    List list;
    list.last=0;
    int i=0,j=0,a;
    printf("输入-100结束。\n");
    scanf("%d",&a);
    while(a!=-100)
    {
        list.data[list.last]=a;
        list.last++;
        if(list.last==MAX)
        {
            printf("已经输入了%d个元素\n",MAX);
            break;
        }
        scanf("%d",&a);
    }
      
    //list.data[1]=1;
    for(j=0;j<list.last;j++)
        printf("%d\n",list.data[j]);
    printf("请输入要查找的位置:");
    scanf("%d",&i);
    if(search(i,list)==-100)
        printf("查找失败!!!\n");//查找
    else
        printf("要查找的值是%d\n",search(i,list));
    printf("请输入插入的位置和插入的数值:");
    scanf("%d%d",&i,&a);
    int result=insert(&list,i,a);
    if(result==-100)
        printf("插入失败!!!\n");
    else
    {
        printf("插入之后的结果:\n");
        for(j=0;j<list.last;j++)
            printf("%d\n",list.data[j]);
    }
    printf("请输入要删除的位置:");
    scanf("%d",&a);
    result=deleteValue(&list,a);
    if(result==-100)
        ;//
    else
    {
        printf("删除之后的结果:\n");
        for(j=0;j<list.last;j++)
            printf("%d\n",list.data[j]);
    }
    printf("总和:%d\n",sum(&list));
}

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1306501

【上篇】
【下篇】

抱歉!评论已关闭.