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

数据结构:顺序表的创建、查找和删除

(2011-04-22 21:33:19)
标签:

顺序表

元素

查找

线性表

程序代码

it

分类: C/Cpp
程序要求:建立一个顺序表,用户通过输入个数和一组非递减顺序的数,即顺序表按照非递减顺序排列,对顺序表进行建立,删除指定位置的数,查找指定位置的数,插入一个数字功能。程序代码如下:

#include "stdio.h"
#include "stdlib.h"

#define listsize 100

typedef struct{
    int data[listsize];
    int length;
}Seqlist;


void main(){
    void createlist(Seqlist *l,int n);
    void printlist(Seqlist *l,int n);
    void locateElem(Seqlist *l,int n);
    void listinsert(Seqlist *l,int i,int n);
    void listdelete(Seqlist *l,int i,int n);
    int n;

    int i=0;
    Seqlist l;
    l.length=0;
   
    printf("请输入线性表长度:");
    scanf("%d",&n);
    createlist(&l,n);
    printlist(&l,n);
    locateElem(&l,n);
    listinsert(&l,i,n);
    listdelete(&l,i,n);
    printf("\n");
}

//新建顺序表

void createlist(Seqlist *l,int n)
{
    int i;
    printf("请输入顺序表元素:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&l->data[i]);
        l->length=n;
    }
}

//输出顺序表

void printlist(Seqlist *l,int n)
{
    int i;
    printf("顺序表为:");
    for(i=0;i<n;i++)
    {
        printf("%d ",l->data[i]);
    }
}

//查找元素

void locateElem(Seqlist *l,int n)
{
    int i=1,*p;
    p=l->data;
    printf("\n请输入要查找的元素n:");
    scanf("%d",&n);
    while(i<=l->length&&(*p++!=n)) ++i;
    if(i<=l->length)
    printf("要查找的数的位置为:%d",i);
}

//插入元素

void listinsert(Seqlist *l,int i,int n)
{
    int *q,*p;
    printf("\n请输入要插入的数:");
    scanf("%d",&n);

    if(l->length==0)
    {
        l->data[0]=n;
        ++l->length;
       
    }
    q=&(l->data[0]);
    while((*q<=n)&&(q<=&(l->data[l->length-1])))
    {
        ++q;
    }
    ++l->length;
    for(p=&(l->data[l->length-1]);p>=q;--p)
    {
    *(p+1)=*p; 
    *p=n; 
    }

 printf("输出新表:\n");  
        for(i=0;i<l->length;i++)
     {
        printf("%d ",l->data[i]);
     }
}

//删除元素

void listdelete(Seqlist *l,int i,int n)
{
    int *p,*q;
    printf("\n请输入要删除的数的位置:");
    scanf("%d",&i);   
   
    if(i<1||i>l->length)
    printf("删除元素失败!");
   
    p=&l->data[i-1];
    n=*p;
    q=l->data+l->length-1;
    for(++p;p<=q;++p)
    {
         *(p-1)=*p;
         --l->length;   

    }
   
    for(i=0;i<l->length+1;i++)
    {
        printf("%d ",l->data[i]);
    }
}

0

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

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

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

新浪公司 版权所有