加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据结构-顺序表的插入、删除、逆序

(2010-12-12 21:41:46)
标签:

it

分类: ACM杂记

#include<stdio.h>
#define MAX 1000
typedef int datatype;

typedef struct
{
    datatype data[MAX];
    int last;
} sequenlist;                     

int main()
{
    int insert( sequenlist *L, int x, int i );     
    int deletee( sequenlist *L, int i );     
    int output_r( sequenlist *L );   
    int input( sequenlist *L );       
    int output( sequenlist *L );      
    sequenlist s,*p=&s;
    int indata,inlocate,deletedx;

    input(p);          

    printf("请输入要插入的数:");           
    scanf("%d",&indata);
    printf("请输入要插入的位置:");
    scanf("%d",&inlocate);
    insert( p,indata,inlocate );            
    printf("插入后的数据:");               
    output(p);

    printf("请输入要删除的位置:");       
 scanf("%d",&deletedx);
    deletee( p, deletedx );        
    printf("删除后的数据:");               
    output(p);

 printf("逆序输出数据:");               
 output_r( p );         

    return 0;
}

int output(sequenlist *L)        
{
    int i;
    for ( i=0; i<=L->last; i++ )
        printf("%d ",L->data[i]);
    printf("\n\n");
    return(1);
}

int input( sequenlist *L )                   
{
    int i;
 printf("请输入原始数据个数:");            
    scanf("%d",&(L->last));
    L->last--;

 printf("请输入原始数据:");
    for ( i=0; i <= L->last; i++ )
      scanf("%d",&(L->data[i]));
    printf("原始数据为:");
    output(L);
    return (1);
}


int insert( sequenlist *L, int x, int i )      
{
    int j;
    if ( ((*L).last)>=MAX-1 )
    {
  printf("overflow");
  return 0;
    }
    else
    {
     if ( (i<1) || ( i > ((*L).last)+1 ) )
        {
           printf("error");
     return 0;
        }
       else
       {
           for ( j=L->last; j>=i-1; j-- )
               L->data[j+1]=L->data[j];
           L->data[i-1]=x;
           L->last++;
       }
    }
    return(1);
}

int deletee( sequenlist *L, int i )    
{
 int j;
 if ( (i<1) || ( i > (L->last)+1 ) )
    {
        printf("error");
  return 0;
    }
    else
    {
        for ( j=i; j<=L->last; j++ )
            L->data[j-1]=L->data[j];
        L->last--;
    }
 return (1);
}

int output_r( sequenlist *L )   
{
 int i;
    for ( i=L->last; i>=0; i-- )
        printf("%d ",L->data[i]);
    printf("\n");
    return(1);
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有