数据结构线性表单链表的查找,插入,删除
- 格式:doc
- 大小:422.69 KB
- 文档页数:29
实验报告
课程名称数据结构
姓名
学号
专业班级
指导教师
目录
第二章线性表的查找、插入、删除 (1)
1.1顺序表的查找 (1)
1.2顺序表的插入 (2)
1.3顺序表的删除 (4)
单链表的建立、插入、删除 (6)
2.1 单链表的建立(尾插法) (6)
2.2 单链表的插入 (8)
2.3 单链表的删除 (10)
第三章栈 (14)
3.1链栈 (14)
3.2 顺序栈 (16)
3.3队列 (18)
3.4杨辉三角 (20)
第四章串 (23)
4.1字符串的建立 (23)
4.2顺序串的插入 (25)
1.线性表的查找、插入、删除
1.1顺序表的查找
程序:
#include
#include
#include
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define ElemType int
#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/
typedef struct
{
ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/
int last; /*记录线性表中最后一个元素在数组elem[]中的位置(下标值),空表为-1*/
}Seqlist;
int Locate(Seqlist L,ElemType e)
/*在顺序表L中查找与e相等的元素,若L。elem[i]=e,则找到该元素,并返回i+1,若找不到,则返回-1*/
{ int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i<=st)&&(L.elem[i]!=e))
/*顺序扫描表,直到找到值为e的元素,或扫描到表尾仍没找到*/
i++;
if(i<=st)
return (i+1); /*若找到值为e的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
void main()
{
Seqlist l;
int p,q,r;
int i;
printf("请输入线性标的长度:");
scanf("%d",&r);
st=r-1;
printf("请输入线性表的各元素值:\n");
for (i=0;i<=st;i++)
{
scanf("%d",&l.elem[i]);
}
printf("请输入要查找的元素值:\n");
scanf("%d",&q);
p=Locate(l,q);
if(p==-1)
printf("在此线性表中没有该元素!\n");
else
printf("该素在线性表中的位置为:%d\n",p);
}
执行结果:
错误分析:在编写过程中,在编写主函数的时候有落下未编写的,导致运行过程中不识别。
1.2顺序表的插入
程序:
#include
#include
//#include
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define ElemType int
#define MAXSIZE 100
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
//#include "common.h"
//#include "seqlist.h"
int InsList(SeqList *L,int i,ElemType e) {
int k;
if((i<1) || (i>L->last+2))
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>= MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return(OK);
}
void main()
{
SeqList *l;
int p,q,r;
int i;
l=(SeqList*)malloc(sizeof(SeqList));
printf("请输入线性表的长度:");
scanf("%d",&r);
l->last = r-1;
printf("请输入线性表的各元素值:\n");