实验顺序表的操作及其应用
一、实验目的
    1)掌握线性表的顺序存储结构;
2)熟练掌握顺序表基本算法的实现;
3)掌握利用线性表数据结构解决实际问题的方法和基本技巧;
4)按照实验题目要求独立正确地完成实验内容
二、实验内容
要求:数据元素类型ElemType 取整型int 或者char。顺序存储实现如下算法:
1)创建一顺序表;
2)输出该顺序表;
3)在顺序表中查第i 个元素,并返回其值;
4)在顺序表中第i 个元素之前插入一已知元素;
5)在顺序表中删除第i 个元素;
6)实现顺序表的合并。(选做)
   
    源程序
//A Sequential List顺序表
#include <stdio.h>
#include <malloc.h>
#include <process.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define InitSize 100    //线性表存储空间的初始分配量
#define ListIncrement 10  //线性表存储空间的分配增量
typedef int ElemType;
typedef struct
{
    ElemType *elem;
    int length;
    int listsize;
}SqList;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
Status InitList(SqList &L) //初始化
{
    L.elem=(ElemType *)malloc(InitSize*sizeof(ElemType));
    if(!L.elem)
    exit(OVERFLOW);
    L.length=0;
    L.listsize=InitSize;
    return OK; 
}
//求表长
int ListLength(SqList &L)
{
  return L.length;
}
//输入元素
int DataInput(SqList &L)
{
 
  int i=1,j=1;
  printf("输入数据后,按“0”结束输入\n");
  while(j)
{
  scanf("%d",&j);
    if(j!=0)
  {
      L.elem[i]=j;
      L.length++;
      i++;
      if(i>InitSize)
          break; 
    } 
  }
  return FALSE;
}
//输出顺序表
Status ListTraverse(SqList L)
{
  ElemType *p;
  int i;
  p=L.elem;
  for(i=0;i<L.length;i++)
      printf("%d  ",*p++);
  printf("\n");
  return OK;
}
//查元素
Status GetElem(SqList L,int i,ElemType &e)
{
  if(i<1||i>L.length)
        exit(ERROR);
  e=L.elem[i-1];
  return OK;
}
//插入元素
Status ListInsert(SqList &L,int i,ElemType e)
{
  ElemType *newbase,*q,*p;
  if(i<1||i>L.length+1)
    return  ERROR;
  if(L.length>=L.listsize)
  {
    newbase=(ElemType *) realloc(L.elem,(L.listsize+ListIncrement)*sizeof(ElemType));
  if(!newbase)
      exit(OVERFLOW);
  L.elem=newbase;
  L.listsize=L.listsize+ListIncrement;
  }
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
    *(p+1)=*p;
      *q=e;
    ++L.length;
  return OK;c语言指针实验总结
}
//删除元素
Status ListDeletSq(SqList &L,int i,ElemType &e)
  ElemType *p,*q;
  if(i<1||i>L.length)
  return ERROR;
  p=&(L.elem[i-1]);
  e=*p;
  q=L.elem+L.length-1;
  for(++p;p<=q;++p)
    *(p-1)=*p;
  --L.length;
  return OK;
}
//主函数
int main()
    SqList L;
    ElemType e;
    char ch;
    int t;
  while(1)
{
  system("cls");
  printf("\t------------MENU------------------\n");
  printf("\t|1.创建一顺序表                  |\n");
  printf("\t|2.输入数据                      |\n");
  printf("\t|3.输出顺序表                    |\n");
  printf("\t|4.查表中元素                  |\n");
  printf("\t|5.于表中插入元素                |\n");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。