顺序表的增,删,改,查

来源:互联网 发布:telnet端口开启 编辑:程序博客网 时间:2024/04/25 07:27

#include "stdafx.h"
#include <stdio.h>
#include <iostream>


using namespace std;

//#define maxsize 100

 //定义顺序表
typedef struct{
  int data[100];
  int length;
}Sqlist;

    //初始化顺序表
 void initList(Sqlist &L){
  L.length=0;
  }

 //建立顺序表
 void Creat(Sqlist &L){
 int a,b,i=0;
 printf("请输入结点数:\n");
 scanf_s("%d",&a);
 printf("请输入各个结点的值:\n",i);
 
 for (i=0;i!=a;++i){
 scanf_s("%d",&b);
 L.data[i]=b;
 ++L.length;
 }
}
//增
 void addList(Sqlist &L,int p,int e){
 
  if(p<1||p>L.length){
  exit(1);
  printf("此位置不可插入!\n");
  }
  for(int i=L.length;i>=p;i--){
   L.data[i+1]=L.data[i];
  }
  L.data[p]=e;
  ++L.length;
 }
 //删除
 void delList(Sqlist &L,int p){
  if(p<1||p>L.length){
  exit(1);
  printf("此位置不合法!\n");
  }
  for(int i=p-1;i<L.length;i++ ){
   L.data[i]=L.data[i+1];
   int e=L.data[p-1];
   }
  --L.length;
 }
 //查找1
 int selList(Sqlist L,int p){
   if(p<1||p>L.length){
  exit(1);
  printf("无此位置!\n");
  }
   return L.data[p-1];
 }
 //查找2
 void LocList(Sqlist L,int e){
  for(int i=0;i<L.length;i++){
   if(L.data[i]==e)
    printf(" 该数在表中第%d位置",i+1);
     }
  
    }
 //修改
 void edList(Sqlist &L,int p,int e){
 
     int temp;
  printf("将表第%d个数变为%d",p,e);
  temp=L.data[p-1];
  L.data[p-1]=e;
 
 }
 //显示顺序表
 void display(Sqlist L){
            for(int i=0;i<L.length;i++){
   printf("%d,",L.data[i]);
    }
 }

 int main(int argc, char *argv[])
  {
    int p,e;
 Sqlist L;
   initList(L);
  Creat(L);
  //插入
 printf("请输入要插入的位置:\n");
 scanf_s("%d",&p);
 printf("请输入要插入值:\n");
 scanf_s("%d",&e);
    addList(L, p, e);
 
 //删除
 printf("请输入要删除的位置:\n");
 scanf_s("%d",&p);
 delList(L,p);
 
 //查找1
 printf("请输入要查找的位置:\n");
 scanf_s("%d",&p);
    e=selList(L,p);
 printf("该位置元素为%d \n",e);
 
 //查找2
 printf("请输入要查找的元素:\n");
 scanf_s("%d",&e);
    LocList(L,e);

 //修改
 printf("请输入要修改元素位置:\n");
 scanf_s("%d",&p);
 printf("替换为:\n");
 scanf_s("%d",&e);
    edList(L,p,e);

  printf("顺序表修改后为:\n");
  display(L);
  system("PAUSE");
  
  }
  

 

原创粉丝点击