我是靠谱客的博主 迷你雨,最近开发中收集的这篇文章主要介绍数据结构子系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这个子系统的switch嵌套怎么改啊 为什么建完表就直接到栈的子系统了   有大佬可以教我一下吗

#include<stdio.h>
#include<windows.h>
#define OK 1;
#define ERROR 0;
#define OVERFLOW -2;
#define MaxSize 10

typedef int ElemType;
typedef int Status;
// 线性表子系统实验
typedef struct 
{
    ElemType *elem;
    int length;
    int size;
}SqList;


//7初始化 
InitList(SqList &L)
{
    L.elem = (ElemType*)malloc(100*sizeof(ElemType));
    if(!L.elem)
    exit(-2);
    L.length=0;
    L.size=100;

}

//1建表 
Create(SqList &L,ElemType a[],int n)
{
    for(int i=0;i<n;i++)
    {
        L.elem[i]=a[i];
        L.length++;
    }
    printf("建表完成n");
    return OK; 
}
//2插入
Insert(SqList &L,ElemType e,int i)//在位置i插入元素e 
{
    int j;
    if(i<1 ||i> L.length+1)//i的位置不合法
    {
        return ERROR;
    }    
    if(L.length >=L.size)// 表L的空间已满
    {
        ElemType *newbase=(ElemType *)realloc(L.elem,(L.size+10)*sizeof(ElemType)); //开辟新空间 
        if(!newbase)
        {
            exit(-2);
        }
        L.elem=newbase;
        L.size+=10;
     } 
     ElemType *q = &(L.elem[i-1]);//将表中第i个元素的地址传给指针q 
     for(ElemType *p=&L.elem[L.length-1];p>=q;--p)
     {
         *(p+1)=*p;
     }
     *q=e;
     ++L.length;
    printf("插入完成n");
    printf("插入后的表为:n");    
    for(int j=0 ;j<L.length; j++)
    {
        printf("%d",L.elem[j]);
    }
     return OK;             
 }
 
 
 //3删除
Delete(SqList &L)//删除i位置的元素 
 {    
    int z;
    printf("请输入要删除元素的位置:n");
    scanf("%d",&z);
     if(z<1 ||z>L.length)
     return ERROR;
    ElemType *p=&(L.elem[z-1]);
    ElemType *q=L.elem+L.length-1 ;
    for(p; p<q; p++)
    {
        *p=*(p+1);
    }
    --L.length;
    printf("删除完成n");
    printf("删除后的表为:n");    
    for(int j=0 ;j<L.length; j++)
    {
        printf("%d",L.elem[j]);
    }
    return OK;
  } 
 
//4显示
Output(SqList L)
{
    printf("线性表中的元素为:n");
    for(int i=0 ;i<L.length; i++)
    {
        printf("%d",L.elem[i]);

    }    
    printf("n");
    return OK;
 } 
 
typedef struct {  //定义线性表数据项结构 
    int key;
    int otherinfo;
}Elemtype;

typedef struct{
    int length;//顺序表长度
    Elemtype *R;//顺序表的动态建立,R用于之后动态建立一块连续的存储空间,是建立存储空间的基地址
}SeqList;

//初始化线性表 
bool InitList(SeqList &T)
{
    T.R=(Elemtype *)malloc(sizeof(Elemtype)*MaxSize);//动态分配内存 
    if(!T.R)//检查是否成功给线性表 T分配空间
    {
        printf("分配空间失败");
        return false; 
    } 
    T.length=0;
    return true;
 } 

//根据输入的元素建立线性表 
bool CreatList(SeqList &T)
{
    int n;
    printf("请输入您想建立的线性表中的元素个数:n");
    scanf("%d",&n);
    printf("请依次输入元素:n");
    for(int i=0;i<n;i++)
    {
        scanf("%d",&T.R[i].key);//赋值
        T.length++; 
    } 
    return true;
 } 

//1顺序查找
int search1(SeqList T,int key)
{
    for(int i=0;i<=T.length;i++)
    {
        if(T.R[i].key==key)
        {
        return i+1; 
        }
    }
    return 0;
 } 

//二分查找
int search2(SeqList T,int key,int low,int high)
{
    int mid=(low+high)/2;
    if(T.R[mid].key==key)
    {
    return key;
    }
    else if(T.R[mid].key<key)
    {
    search2(T,key,mid+1,high); 
    }
    else if(T.R[mid].key>key)
    {
    search2(T,key,low,mid-1);
    } 
 } 

//二叉排序树结点定义
typedef struct BSTNode{ 
    int data;
    struct BSTNode *left;
    struct BSTNode *right;
};
 
//二叉树结点创建 
BSTNode *CreateTreeNode(int x)
{
    BSTNode *p = (BSTNode *)malloc(sizeof(BSTNode));
    p->data = x;
    p->left = NULL;
    p->right = NULL;
    return p;
}

//二叉排序树的构造

void Creat(BSTNode *&root,int str[],int n)
{
    root=NULL; 
    for(int i=0;i<n;i++) 
    {
// Insert(root,str[i]);
    } 
 } 
 
void Show(int result,int key)

{
    if(result==0)
    {
    printf("没有找到该元素n");
    }
    else
    {
    printf("找到元素%d,在第%d位n",key,result);
    }
}

void menu()
{
    printf("tttt数据结构子系统  n");
    printf("ttt******************************n");
    printf("ttt*    1  线     性     表     *n");
    printf("ttt*    2         栈            *n");
    printf("ttt*    3  队            列     *n");
    printf("ttt*    4  二     叉     树     *n");
    printf("ttt*    5         图            *n");
    printf("ttt*    6  查            找     *n");
    printf("ttt*    7  排            序     *n");
    printf("ttt*    0  退            出     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-7):n");

}

void menu_1()
{
    printf("tttt   线性表子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  建            表     *n");
    printf("ttt*    2  插            入     *n");
    printf("ttt*    3  删            除     *n");
    printf("ttt*    4  显            示     *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-4):n");        
 } 
 
void menu_2()
{
    printf("tttt   栈子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  进            栈     *n");
    printf("ttt*    2  出            栈     *n");
    printf("ttt*    3  显            示     *n");
    printf("ttt*    4  数   制  转   换     *n");
    printf("ttt*    5  逆   波  兰   式     *n");
    printf("ttt*    6         图            *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-6):n");    
    
}
void menu_3()
{
    printf("tttt   队列子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  进            队     *n");
    printf("ttt*    2  出            队     *n");
    printf("ttt*    3  读     队     头     *n");
    printf("ttt*    4  显            示     *n");
    printf("ttt*    5  双     向     队     *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-5):n");    
 } 
void menu_4()
{
    printf("tttt   树子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  建  二   叉   树     *n");
    printf("ttt*    2  先  序   遍   历     *n");
    printf("ttt*    3  中  序   遍   历     *n");
    printf("ttt*    4  后  序   遍   历     *n");
    printf("ttt*    5  层  次   遍   历     *n");
    printf("ttt*    6  叶  结   点   数     *n");
    printf("ttt*    7  总  结   点   数     *n");
    printf("ttt*    8  树  的   深   度     *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-8):n");    
 }
void menu_5()
{
    printf("tttt   图子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  建 立 邻 接 矩 阵     *n");
    printf("ttt*    2  深 度 优 先 遍 历     *n");
    printf("ttt*    3  广 度 优 先 遍 历     *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-3):n");    
 } 
void menu_6()
{
    printf("tttt   查找子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  顺  序   查   找     *n");
    printf("ttt*    2  二  分   查   找     *n");
    printf("ttt*    3  二  叉  排 序 树     *n");
    printf("ttt*    4  建  排   序   树     *n");
    printf("ttt*    5  查  找   结   点     *n");
    printf("ttt*    6  插  入   结   点     *n");
    printf("ttt*    7  删  除   结   点     *n");
    printf("ttt*    8  中  序   输   出     *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-8):n");    
 }  
void menu_7()
{
    printf("tttt   排序子系统n");
    printf("ttt******************************n");
    printf("ttt*    1  数  据   输   入     *n");
    printf("ttt*    2  插  入   排   序     *n");
    printf("ttt*    3  希  尔   排   序     *n");
    printf("ttt*    4  冒  泡   排   序     *n");
    printf("ttt*    5  快  速   排   序     *n");
    printf("ttt*    6  选  择   排   序     *n");
    printf("ttt*    7  归  并   排   序     *n");
    printf("ttt*    8  堆     排     序    *n");
    printf("ttt*    0  返            回     *n");
    printf("ttt******************************n");
    printf("ttt请输入菜单号(0-8):n");    
 }   
int main()
{
    int c,c1,c2,c3,c4,c5,c6,c7;
    SeqList T; 
    SqList sql; 
    BSTNode *root;
    int key,result; 
    menu();
//    while (1)
//    {
        scanf("%d",&c);
        system("cls");
        InitList(sql);
        switch(c){
        while(1)
          {            
            case 1:
                {
                    menu_1();
                    scanf("%d",&c1);    
                    system("cls");
                    switch (c1)
                    {
                        case 1:
                            {
                            ElemType a[]={1,2,3,4,5,6,7,8};    
                            Create(sql,a,8);
                            break;                                
                            }
                        case 2:
                            {
                            ElemType x ;
                            int y;
                            printf("请输入要插入的元素及其位置(中间用空格隔开):n");
                            scanf("%d%d",&x,&y);
                            Insert(sql , x , y);                                
                            }break;
                        case 3:
                            {
                            Delete(sql );        
                            }break;
                        case 4:
                            {
                            Output(sql);        
                            }break;
                        case 0:
                            {
                                
                            }break;
                    }
/*                    if(c1==1)
                    {
                        ElemType a[]={1,2,3,4,5,6,7,8};    
                        Create(sql,a,8);
                        break; 
                        }
                    else if(c1==2)
                    {
                        ElemType x ;
                        int y;
                        printf("请输入要插入的元素及其位置(中间用空格隔开):n");
                        scanf("%d%d",&x,&y);
                        Insert(sql , x , y);                        
                        }
                    else if(c1==3)
                    {
                        Delete(sql );
                        }
                    else if(c1==4)
                    {
                        Output(sql);
                        }
                    else if(c1==0);
                    {
                    //    menu();
                    
                        }
                    break;
                    }    */
//                }
            case 2:
                {
                menu_2();
                scanf("%d",&c2);
                system("cls");
                if(c2==0);
                {
                menu();    
                }    
                break;    
                }
            case 3:
                {
                    menu_1();
                    scanf("%d",&c3);
                    system("cls");
                    if(c3==0);
                    {
                    menu();    
                    }
                    break;
                }
            case 4:
                {
                    menu_4();
                    scanf("%d",&c4);
                    system("cls");
                    if(c4==0);
                    {
                    menu();    
                    }
                    break;
                }
            case 5:
                {
                    menu_5();
                    scanf("%d",&c5);
                    system("cls");
                    if(c5==0);
                    {
                    menu();    
                    }
                    break;
                }
            case 6:
                {
                    menu_6();
                    scanf("%d",&c6);
                    system("cls");
                    if(c6=1)
                    {
                    if(InitList(T)&&CreatList(T))
                    {
                        printf("创建成功n");
                    }                        
                    printf("请输入要查找的关键字:n");
                    scanf("%d",&key);
                    result=search1(T,key);
                    Show(result,key);
                    system("cls");
                     } 
                    if(c6=2)
                    {
                    if(InitList(T)&&CreatList(T))
                    {
                        printf("创建成功n");
                    }                        
                    printf("请输入要查找的关键字:n");
                    scanf("%d",&key);
                    result=search2( T, key, 1, T.length);
                    Show(result,key);                        
                    }
                    if(c6==0);
                    {
                    menu();    
                    }
                    break;
                }
            case 7:
                {
                    menu_7();    
                    scanf("%d",&c7);
                    system("cls");
                    if(c7==0);
                    {
                    menu();    
                    }
                    break;
                }
            case 0:
                {
                    printf("已退出系统!n");
                }
                break;                
            }
    
     }
    return 0;
    }
}

最后

以上就是迷你雨为你收集整理的数据结构子系统的全部内容,希望文章能够帮你解决数据结构子系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部