计算机软件基础(自考本科)(1.8)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
int i=0;
while(i<L.length&&L.data[i]!=x) i++;
if(i<L.length) return(i); /*如果找到了,则返回数值i*/
else return(0);
/*如果找不到,则返回数值0*/
}
二、顺序表
一个完整的查找程序:
#include<stdio.h>
for(j=L.length-1;j>=i;j--) {
L.data[j+1]=L.data[j]; } L.data[i]=x; L.length++; } }
二、顺序表
一个完整的插入运算程序
#include<stdio.h> #define listsze 10
struct sequenlist {
int j; if(L.length>=listsze) printf("overflow\n"); else if((i<0)||(i>L.length)) printf("position is no correct\n"); else {
for(j=L.length-1;j>=i;j--) {
(2)顺序表中数据节点地址的计算
Loc(ai)=loc(a0)+i*d (0≤i≤n-1)
二、顺序表
1.顺序表
(3)顺序表C语言描述:
struct sequenlist {
datatype a[listsize]; int length; };
//表示线性表有(a0,a1 ,...,an-1) //length表示线性表的实际长度
{
int i=0;
while(i<L.length&&L.data[i]!=x)
i++;
if(i<L.length) return(i);
else return(0);
}
二、顺序表
一个完整的查找程序(续):
main() {
int i,j,y; struct sequenlist a; scanf("%d",&a.length); scanf("%d",&j); for(i=0;i<a.length;i++) scanf("%d",&a.data[i]); y=find(a , j); if(y) printf("%d\n",y); else printf("no find"); }
scanf("%d",&a.length); /*输入实际表长*/
一、线性表的概念
(2)线性表的逻辑结构特征: ②同一个线性表中的数据节点具有相同的属性。 ③线性表长度:线性表中数据节点的个数。
2. 线性表的存储结构 (1)顺序存储结构:顺序表结构; (2)链式存储结构:链表结构;
二、顺序表
1.顺序表 (1)顺序表:
把线性表中的数据节点按其逻辑顺序依次存 放到计算机内存中的一连续空间中,将这一连续 空间称为顺序表。
二、顺序表
插入运算的类C语言算法:
void insert(struct sequenlist L , datatype x , int i) /*定义insert函数*/ {
int j; if(L.length>=listsze) printf("overflow\n"); else if((i<0)||(i>L.length)) printf("position is no correct\n"); else {
L.data[j+1]=L.data[j]; } L.data[i]=x; L.length++; for(j=0;j<L.length;j++) printf("%d,",L.data[j]); } }
二、顺序表
一个完整的插入运算程序(续)
main()
{
int i,j,y;
struct sequenlist a;
二、顺序表
2.顺序表的基本运算——查找
struct sequenlist
/*构建sequenlist型*/
{
datatype data[listsize];
int length;
};wk.baidu.com
struct sequenlist L;
/*定义sequenlist变量L*/
int find(struct sequenlist L , datatype x) /*定义find函数*/
int data[listsze]; int length; };
/*构建sequenlist型*/
struct sequenlist L;
二、顺序表
一个完整的插入运算程序(续)
void insert(struct sequenlist L , int x , int i) /*定义insert函数*/ {
计算机 软件基础
第二篇 数据结构基础
第八章 线性表(linear list)
一、线性表的概念
1.线性表的逻辑结构
(1)线性表:是由n(n ≥0)个数据节点 a0, a1 ,…,an-1组成的有限序列。 (2)线性表的逻辑结构特征: ①对于非空线性表: 有且仅有一个开始节点,该节点有且仅有一个直 接的后继; 有且只有一个终结节点,该节点有且仅有一个直 接的前驱; 其余内部节点有且仅有一个直接前驱和一个直接 后继。
#define listsize 50 struct sequenlist
/*构建sequenlist型*/
{
int data[listsize];
int length;
};
struct sequenlist L;
/*定义sequenlist变量L*/
int find(struct sequenlist L , int x) /*定义find函数*/
/*输入实际表长*/ /* 输入要查找的数据*/
二、顺序表
顺序表查找运算的结论:
(1)查找成功的平均查找次数为:(表长+1)/2。
(2)时间复杂度:表长越长,查找所消耗时间越多, 所以,时间复杂度与n有关,即:T(n)=O(n)。
二、顺序表
3.顺序表的基本运算——插入
step1:判断表是否满?如果已满,则输出“表满” ; 否则进行第二步; step2:判断要插入的位置是否在表内?如果不在,则 输出“位置不对”;否则进行第三步; step3:从第n-1个节点到第i个节点全部后移1位; step4:在顺序表的第i个位置插入x; step5:将顺序表的表长加1;