线性表的各种操作

来源:互联网 发布:淘宝客找不到主推宝贝 编辑:程序博客网 时间:2024/05/01 14:21
#include"stdio.h"#define ElemType int#define MAX 10typedef 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

0 0
原创粉丝点击