- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct list
{
ElemType *elem;//指针定义数组
int listsize;
int length;
}Sqlist;
void initlist_sq(Sqlist *L)
{
L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
if(!L->elem) exit(0);
L->length=0;
L->listsize=MAXSIZE;
}
//在线性表L的第n个元素之前插入元素x
void insert_sq(Sqlist *L,int n,ElemType x)
{
int i;
//检查插入位置n的合法性
if( n < 1 || n > L->length + 1 )
{
printf("插入的位置n 非法!\n");
return;
}
//检查线性表是否为满
if( L->length >= L->listsize )
{
printf("线性表满了!\n");
return;
}
//插入点之后的元素循环后移一个位置
for( i = L->length; i >= n; i--)
L->elem[i] = L->elem[i-1];
//将代插入的元素存入到下标为n-1的位置
L->elem[n-1] = x;
//修改线性表的长度
L->length++;
}
//利用插入方法实现创建指定长度的线性表L
void creat_sq(Sqlist *L)
{
int tablen,i=1;
ElemType temp;
printf("请输入顺序表的长度\n");
scanf("%d",&tablen);
printf("请输入 %d 个数据\n",tablen);
do
{
//输入待插入的元素 temp
scanf("%d",&temp);
//将元素temp 插入到线性表L的第i个位置
insert_sq(L,i,temp);
//修改i的值,以便下一次进行插入
i++;
}while((i<=tablen)&&(i<L->listsize ));
}
//打印线性表中的所有元素
void display_sq(Sqlist *L)
{
int i;
i=0;
do
{
//打印线性表L中下标为i的元素
printf("%d\t",L->elem[i]);
}
while(++i<L->length);
printf("\n**********顺序表打印完毕**********\n\n");
}
//在线性表L中查找元素x,若存在范围其位置;若不存在返回0
int Search_sq(Sqlist *L,ElemType x)
{
int i;
i=0;
do
{
//比较线性表中下标为i的元素与指定值x是否相等,若相等,返回其位置i+1
if( L->elem[i] == x )
return i+1;
}while(++i<L->length);
return 0;
}
//查找线性表L中的第n个元素,返回其值
ElemType Search_sq_byV(Sqlist *L,int n)
{
//检查n的取值是否合法,若非法返回0
if( n < 1 || n > L->length )
return 0;
//若n取值合法,返回线性表L中下标为n-1的元素
return L->elem[n-1];
}
//删除线性表L中的第n个元素
void delete_sq(Sqlist *L,int n)
{
int i;
//检查删除的位置n的合法性
if( n < 1 || n > L->length )
{
printf("删除的位置n非法!\n");
exit(0);
}
//若n合法,则删除点之后的元素循环向前移动一个位置
i = n;
do
{
//删除点之后的元素前移一个位置
L->elem[i-1] = L->elem[i];
}while(++i<L->length);
//线性表长度减少1
L->length--;
printf("\n**********%d deleted**********\n",n);
}
int main(v
文档评论(0)