1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
实验内容:
试分析并编程实现以下问题:
1、线性表的构造。构造一个含有10名同学元素的顺序表,同学数据可从键盘输入。为了解决顺序表的存储单元,可以参考课本中的顺序表的初始化算法。
相关算法代码如下,可以参考,也可以自己编写程序。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define TURE 1
#define FAUSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList *L) //初始化线性表
{
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)return OVERFLOW;
L->length=0;
L->listsize =LIST_INIT_SIZE;
return OK;
}
Status ListInsert_Sq(SqList *L,int i,ElemType e)//向表中插入元素
{
ElemType *q,*p,*newbase;
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)return ERROR;
L->elem=newbase;
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;
}
Status ListDelete_Sq(SqList *L,int i,ElemType *e)//删除表中的元素
{
ElemType *p,*q;
if(i<1||i>L->length+1)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 ListFind(SqList L,int k)
{
return L.elem[k-1];
}
int main()
{
SqList Lst;
int i,j,n=10,a,k,p=1;
ElemType e;
if(InitList_Sq(&Lst)==OK)
{
for(i=1;i<=n;i++)
if(ListInsert_Sq(&Lst,i,i)!=OK)break;
printf("原来线性表中的元素为:");
for(i=0;i<Lst.length;i++)
printf("%d ",Lst.elem[i]);
printf("\n");
while(p)
{
printf("1)插入元素2)删除元素3)查找元素4)显示操作结果0)退出\n");
scanf("%d",&j);
switch(j)
{
case 1:
printf("请输入要插入的元素和插入的位置:");
scanf("%d%d",&a,&k);
ListInsert_Sq(&Lst,k,a);break;
case 2:
printf("请输入要删除的位置:");
scanf("%d",&k);
ListDelete_Sq(&Lst,k,&e);break;
case 3:
printf("请输入查找元素的位置:");
scanf("%d",&k);
printf("位置为%d的元素为%d\n",k,ListFind(Lst,k));
case 4:
for(i=0;i<Lst.length;i++)
printf("%d ",Lst.elem[i]);
printf("\n");break;
case 0:p=0;break;
}
}
}//if
return 0;
}//main
https://blog.csdn.net/qq_44939000/article/details/103795876