顺序表C语言代码实现

一、代码 

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
        ElemType elem[MAXSIZE];
        int length;
}SqList;
void outlin(SqList s);
void create(SqList *v);
void insert(SqList *v,int i,int x);
void deleter(SqList *v,int i);
int main() 
{
        SqList pz;
        int i,y,cord;
        do
        {
                printf("\n                主菜单\n");
                printf("        1        建立线性表\n");
                printf("        2        插入一个元素\n");
                printf("        3        删除一个元素\n");
                printf("        4        结束程序\n");
                printf("-------------------------\n");
                printf("请输入您的选择(1,2,3,4) :");
                scanf("%d",&cord);
                switch(cord)
                {
                case 1:
                        {
                                create(&pz);
                                outlin(pz);
                        }break;
                case 2:
                        {
                                printf("\n 请输入插入的位置 i:");
                                scanf("%d",&i);
                                printf("\n 插入的数据 x:"); 
                                scanf("%d",&y);
                                insert(&pz,i,y);
                                outlin(pz);
                        }break;
                case 3:
                        {
                                printf("\n 请输入删除的位置 i:");
                                scanf("%d",&i);
                                deleter(&pz,i);
                                outlin(pz);
                        }break;
                case 4:exit(0);
                }
        }while(cord<=4);
        return 0;
}
void outlin(SqList s)
{
        system("cls");
        int i;
        printf("表信息:\n"); 
        printf("位置  元素值   物理地址"); 
        for(i=1;i<=s.length;i++)
                printf("\n%2d %6d %13d",i,s.elem[i-1],&s.elem[i-1]);
        printf("\n-------------------------");
}

void insert(SqList *v,int i,ElemType x)
{
        int j;
        if((i<0)||(i>v->length+1))
        {
        //	system("cls");
        	printf("\n Error!您输入的位置有误,请重新输入\n");
        	system("pause");
		}
        else
        {
                for(j=v->length;j>=i;j--)
                        v->elem[j]=v->elem[j-1];
                v->elem[j]=x;
                v->length++;
                printf("\n数据插入成功!\n"); system("pause");
        }
}
void deleter(SqList *v,int i)
{
        int j;
        if((i<0)||(i>v->length)){
                printf("\n No exit!\n");
                system("pause");
        }
        else
        {
                for(j=i;j<v->length;j++)
                        v->elem[j-1]=v->elem[j];
                v->length--;
                printf("\n成功删除%d位置上的数据\n",i);
                system("pause");
        }
}
void create(SqList *v)
{
        int i;
        printf("\n 请输入表长n=");
        scanf("%d",&(v->length));
        printf("\n 请输入表数据:\n");
        for(i=0;i<v->length;i++)
        {
                printf("\n data%d=",i+1);
                scanf("%d",&(v->elem[i]));
        }
    printf("\n表创建成功\n");system("pause"); 
}

 二、执行效果

欢迎修改指正~ 

猜你喜欢

转载自blog.csdn.net/qq_44932745/article/details/126969114
今日推荐