找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1831|回复: 0
打印 上一主题 下一主题
收起左侧

顺序表 的源代码

[复制链接]
跳转到指定楼层
楼主
ID:126856 发表于 2016-6-15 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stdlib.h>
#include <windows.h>

#define LEN 100

typedef struct
{
        float a[LEN],b[LEN],c[LEN];
        int length_A,length_B,length_C;
}Seqlist;

void menu(Seqlist &L);

void creat(Seqlist &L)//创建
{
        int n,i,j;
        do
        {
                system("cls");
                puts("1:A 组创建\n\n2:B 组创建\n\n0:返回菜单\n\n");
                printf("请选择操作:");
                scanf("%d",&n);
                system("cls");
                if(n==1)
                {
                        printf("请输入要创建元素的个数:");
                        scanf("%d",&j);
                        L.length_A=0;
                        for(i=0;i<j;i++)
                        {
                                printf("请输入第%d个元素:",i+1);
                                if(scanf("%f",&L.a[i])!=0)
                                        L.length_A++;
                        }
                }
                else if(n==2)
                {
                        printf("请输入要创建元素的个数:");
                        scanf("%d",&j);
                        L.length_B=0;
                        for(i=0;i<j;i++)
                        {
                                printf("请输入第%d个元素:",i+1);
                                scanf("%f",&L.b[i]);
                                L.length_B++;
                        }
                }
                else if(n==0)
                {
                        Sleep(1000);
                        menu(L);
                }
                else
                {
                        puts("选择错误,请重新选择");
                        Sleep(1000);
                }
        }while(1);
}

void showA(Seqlist &L)//打印A
{
        int i;
                printf("A组元素为:");
                for(i=0;i<L.length_A;i++)
                        printf("%.1f\t",L.a[i]);
                putchar('\n');
}

void showB(Seqlist &L)//打印B
{
        int i;
                printf("B组元素为:");
                for(i=0;i<L.length_B;i++)
                        printf("%.1f\t",L.b[i]);
                putchar('\n');
}

void showC(Seqlist &L)//打印C
{
        int i;
                printf("C组元素为:");
                for(i=0;i<L.length_C;i++)
                        printf("%.1f\t",L.c[i]);
                putchar('\n');
}

void show(Seqlist &L)//打印
{
        int n;
        do
        {
                system("cls");
                showA(L);
                showB(L);
                showC(L);
                printf("按0返回菜单\n");
                scanf("%d",&n);
                if(n==0)
                {
                        Sleep(1000);
                        system("cls");
                        menu(L);
                }
        }while(n!=0);
}

void insert(Seqlist &L)//插入
{
        int n,i,j;
        float m;
        do
        {
                system("cls");
               
                //先打印一次数据
                //***************************
                showA(L);
                showB(L);
                //***************************
                 
                putchar('\n');
                puts("1:A 组插入\n\n2:B 组插入\n\n0:返回菜单\n\n");
                printf("请选择操作:");
                scanf("%d",&n);
                if(n==1)
                {
                        if(L.length_A==0)
                        {
                                printf("没有元素,不能插入,请先创建元素!");
                                Sleep(3000);
                                creat(L);
                        }
                        printf("请输入要插入的数:");
                        scanf("%f",&m);
                        do
                        {
                                printf("请选择插入在第几位:");
                                scanf("%d",&j);
                                if(j<1||j>L.length_A+1)
                                        printf("位置错误,请重新选择位置:");
                                else
                                {
                                        for(i=L.length_A;i>=j;i--)
                                                L.a[i]=L.a[i-1];
                                        L.a[j-1]=m;
                                        L.length_A++;
                                        break;
                                }
                        }while(1);
                }
                else if(n==2)
                {
                        if(L.length_B==0)
                        {
                                printf("没有元素,不能插入,请先创建元素!");
                                Sleep(3000);
                                creat(L);
                        }
                        printf("请输入要插入的数:");
                        scanf("%f",&m);
                        do
                        {
                                printf("请选择插入在第几位:");
                                scanf("%d",&j);
                                if(j<1||j>L.length_B+1)
                                        printf("位置错误,请重新选择位置");
                                else
                                {
                                        for(i=L.length_B;i>=j;i--)
                                                L.b[i]=L.b[i-1];
                                        L.b[j-1]=m;
                                        L.length_B++;
                                        break;
                                }
                        }while(1);
                }
                else if(n==0)
                {
                        Sleep(1000);
                        system("cls");
                        menu(L);
                }
                else
                {
                        puts("选择错误,请重新选择");
                        Sleep(1000);
                }
        }while(1);
}

void del(Seqlist &L)//删除
{
        int n,i,j;
        do
        {
                system("cls");
               
                //先打印一次数据
                //***************************
                showA(L);
                showB(L);
                showC(L);
                //***************************
                 
                putchar('\n');
                puts("1:A 组删除\n\n2:B 组删除\n\n0:返回菜单\n\n");
                printf("请选择操作:");
                scanf("%d",&n);
                if(n==1)
                {
                        do
                        {
                                if(L.length_A==0)
                                {
                                        printf("没有元素,不能删除,请先创建元素!");
                                        Sleep(3000);
                                        creat(L);
                                }
                                printf("删除第几个位置的数");
                                scanf("%d",&j);
                                if(j<1||j>L.length_A+1)
                                        printf("位置错误,请重新选择位置");
                                else
                                {
                                        for(i=j;i<L.length_A;i++)
                                                L.a[i-1]=L.a[i];
                                        L.length_A--;
                                        break;
                                }
                        }while(1);
                }
                else if(n==2)
                {
                        do
                        {
                                if(L.length_A==0)
                                {
                                        printf("没有元素,不能插入,请先创建元素!");
                                        Sleep(3000);
                                        creat(L);
                                }
                                printf("删除第几个位置的数");
                                scanf("%d",&j);
                                if(j<1||j>L.length_B+1)
                                        printf("位置错误,请重新选择位置");
                                else
                                {
                                        for(i=j;i<L.length_B;i++)
                                                L.b[i-1]=L.b[i];
                                        L.length_B--;
                                        break;
                                }
                        }while(1);
                }
                else if(n==0)
                {
                        Sleep(1000);
                        system("cls");
                        menu(L);
                }
                else
                {
                        puts("选择错误,请重新选择");
                        Sleep(1000);
                }
        }while(1);
}

void gather(Seqlist &L)//合并
{
        system("cls");
        int i,j,flag=0;
        L.length_C=0;
        if(L.length_A==0&&L.length_B==0)
        {
                printf("没有元素,合并失败!\n");
                Sleep(1500);
                printf("请先创建元素");
                Sleep(3000);
                creat(L);
        }
        for(i=0;i<L.length_A;i++)
        {
                if(i==0)
                {
                        L.c[i]=L.a[i];
                        L.length_C++;
                }
                else
                {
                        for(j=0;j<L.length_C;j++)
                        {
                                if(L.c[j]!=L.a[i])
                                        flag=1;
                                else
                                {
                                        flag=0;
                                        break;
                                }
                        }
                        if(flag==1)
                        {
                                L.c[L.length_C]=L.a[i];
                                L.length_C++;
                        }
                }
        }
       
        for(i=0;i<L.length_B;i++)
        {
                for(j=0;j<L.length_C;j++)
                {
                        if(L.c[j]!=L.b[i])
                                flag=1;
                        else
                        {
                                flag=0;
                                break;
                        }
                }
                if(flag==1)
                {
                        L.c[L.length_C]=L.b[i];
                        L.length_C++;
                }
        }
        printf("合并数据成功\n");
        Sleep(1000);
        printf("即将返回菜单...\n");
        Sleep(1500);
        system("cls");
}

void arrangeA(Seqlist &L)//排序A
{
        int i,j;
        float temp;
        if(L.length_A==0)
        {
                printf("没有元素,不能排序,请先创建元素!");
                Sleep(3000);
                creat(L);
        }
        for(i=0;i<L.length_A;i++)
        {
                for(j=1;j<L.length_A-i;j++)
                {
                        if(L.a[j-1]>L.a[j])
                        {
                                temp=L.a[j-1];
                                L.a[j-1]=L.a[j];
                                L.a[j]=temp;
                        }
                }
        }
}

void arrangeB(Seqlist &L)//排序B
{
        int i,j;
        float temp;
        if(L.length_B==0)
        {
                printf("没有元素,不能排序,请先创建元素!");
                Sleep(3000);
                creat(L);
        }
        for(i=0;i<L.length_B;i++)
        {
                for(j=1;j<L.length_B-i;j++)
                {
                        if(L.b[j-1]>L.b[j])
                        {
                                temp=L.b[j-1];
                                L.b[j-1]=L.b[j];
                                L.b[j]=temp;
                        }
                }
        }
}

void arrangeC(Seqlist &L)//排序C
{
        int i,j;
        float temp;
        if(L.length_C==0)
        {
                printf("没有元素,不能排序,请先创建元素!");
                Sleep(3000);
                creat(L);
        }
        for(i=0;i<L.length_C;i++)
        {
                for(j=1;j<L.length_C-i;j++)
                {
                        if(L.c[j-1]>L.c[j])
                        {
                                temp=L.c[j-1];
                                L.c[j-1]=L.c[j];
                                L.c[j]=temp;
                        }
                }
        }
}

void arrange(Seqlist &L)//排序
{
        int n;
        do
        {
                system("cls");
                puts("1:A 组排序\t2:B 组排序\n\n3:C 组排序\t0:返回菜单\n\n");
                printf("请选择操作:");
                scanf("%d",&n);
                if(n==1)
                {
                        arrangeA(L);
                        printf("排序成功");
                        Sleep(1000);
                }
                else if(n==2)
                {
                        arrangeB(L);
                        printf("排序成功");
                        Sleep(1000);
                }
                else if(n==3)
                {
                        arrangeC(L);
                        printf("排序成功");
                        Sleep(1000);
                }
                else if(n==0)
                {
                        Sleep(1000);
                        system("cls");
                        menu(L);
                }
                else
                {
                        puts("选择错误,请重新选择");
                        Sleep(1000);
                }
        }while(1);
}

void menu(Seqlist &L)//菜单
{
        int n;
        system("cls");
        do
        {
                puts("1:创建元素\t2:查看元素\n3:插入元素\t4:删除元素\n5:合并元素\t6:排序元素\n");
                puts("请选择:");
                scanf("%d",&n);
                if(n==1||n==2||n==3||n==4||n==5||n==6)
                {
                        switch(n)
                        {
                                case 1:creat(L);break;
                                case 2:show(L);break;
                                case 3:insert(L);break;
                                case 4:del(L);break;
                                case 5:gather(L);break;
                                case 6:arrange(L);break;
                                default:break;
                        }
                }
                else
                {
                        puts("选择错误,请重新选择");
                        Sleep(1500);
                        system("cls");
                }
        }while(1);
}

int main()//主函数
{
        Seqlist L;
        L.length_C=0;
        menu(L);
        return 0;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表