线性表--顺序表
来源:互联网 发布:外国人在淘宝开店 编辑:程序博客网 时间:2024/04/30 17:12
#include<stdio.h>#define MAX 1000typedef struct{int data[MAX];int len;}Sqlist;void inint(Sqlist *l)//初始化顺序表{ int i,n;l->len=0;printf("请输入顺序表的元素的个数N\n");scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&l->data[i]);l->len++;} }void insnode(Sqlist *l,int i,int x)//将X插入到指定位置第i个位置{int j; if((i==0||l->len<i)&&i<=MAX){printf("输入的插入指定位置有错\n");}else{for(j=l->len;j>=i;j--)l->data[j]=l->data[j-1];l->data[i-1]=x;l->len++;}} void delnode(Sqlist *l,int i)//删除指定位置i的元素{int j; if(i==0||i>l->len){ printf("输入的删除指定位置有错\n");}else{for(j=i-1;j<l->len-1;j++)l->data[j]=l->data[j+1]; l->len--;}}int locate(Sqlist l,int x)//按x的值查询{ int i,flag; for(i=0;i<l.len;i++) { if(l.data[i]==x) { flag=i; break; } else flag=-1; } return flag;}int get(Sqlist l,int i)//取第i个位置的值{ if(i==0||i>l.len){ printf("输入的删除指定位置有错\n");}else{return l.data[i-1];}}void display(Sqlist l)//显示顺序表{ int i; for(i=0;i<l.len;i++) { printf("%d ",l.data[i]); } printf("\n");}int main(){ Sqlist s; int i,x; char c; while(1) { printf("**************************\n"); printf("* *\n"); printf("* 1 顺序表初始化 *\n"); printf("* 2 顺序表指定插入 *\n"); printf("* 3 顺序表指定删除 *\n"); printf("* 4 顺序表按值查询 *\n"); printf("* 5 顺序表指定取值 *\n"); printf("* 6 退出 *\n"); printf("**************************\n"); c=getchar(); if(c=='6')break; else switch(c) { case '1':inint(&s); printf("初始化后的顺序表:\n"); display(s);break; case '2':printf("请输入要插入的位置和值\n"); scanf("%d%d",&i,&x); insnode(&s,i,x); printf("插入指定位置值后的顺序表:\n"); display(s); break; case '3':printf("请输入要删除的位置\n"); scanf("%d",&i); delnode(&s,i); printf("删除指定位置值后的顺序表:\n"); display(s); break; case '4':printf("请输入要按值查询的值\n"); scanf("%d",&x); if(locate(s,x)!=-1) printf("在顺序表中查到了\n"); else printf("没有查到"); break; case '5':printf("请输入要取的值的位置\n"); scanf("%d",&i); printf("第%d个位置的值=%d\n",i,get(s,i)); break; } getchar();}return 0;}