用c语言实现在带头结点的单链线性表l中的第i个位置之后插入元素e,(1)线性表...

(一)线性表

一、线性表的定义

1、线性结构的特点

在数据元素的非空有限集中,(1)存在唯一的一个被称作“第一个”的数据元素;(2)存在惟一的一个被称作“最后一个”的数据元素;(3)除第一个之外,集合中的每个数据元素均只有一个前驱;(4)出最后一个之外,集合中每个数据元素均只有一个后继。

2、线性表

一个线性表n个数据元素(或结点)的有序序列:

a0,a1,a2,•••,an-1

其中a0是开始结点,an-1是终端结点,ai是ai+1的前驱结点,ai+1是ai的后继结点。一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录。含有大量记录的线性表称为文件。

3、线性表的常用基本操作

ElemType GetElement(Sqlist L,int i,EleType &e) //用e返回L中第i个数据元素的值

status ListInsert(Sqlist &L,int i,EleType e) //在L中第i个位置之前插入新的数据元素e,L长度加1

status ListDelete(Sqlist &L,int i,EleType &e); //删除L的第i个数据元素,并用e返回s其值,L长度减1

注:

以上操作均限定1<=i<=ListLength(L)

&这个符号并不是C语言中的取地址操作,而是为了便于C语言的算法描述,除了值调用以外,增添了C++语言的引用调用的参数传递方式。

二、线性表的顺序表示和实现</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 顺序存储结构数据数据元素之间逻辑关系是由( )表示的,链接存储结构的数据元素之间的逻辑关系是由( )表示的。 A.线性结构 B.非线性结构 C.存储位置 D.指针 2. 线性表是( )。 A.一个有限序列,可以为空 B. 一个有限序列,不能为空 C. 一个无限序列,可以为空 D. 一个无限序列,不能为空 3. 已知一维数组A采用顺序存储结构,每个元素占用4个存储单元,第9个元素的地址为144,则第一个元素的地址是( )。 A. 108 B. 180 C. 176 D. 112 4. 在单链删除指针p所指结点的后继结点,则执行( )。 A. p->next= p->next->next B. p->next= p->next C. p= p->next->next D. p= p->next; p->next= p->next->next 5. 若某链表最常用的操作是在最后一个结点之后插入一个结点删除最后一个结点,则采用( )存储方式最节省时间。 A. 单链表 B. 双链表 C. 头结点的双循环链表 D. 单循环链表 6.二维数组A[7][8]以列序为主序的存储, 计算数组元素A[5][3] 的一维存储空间下标 k=( )。 A. 38 B. 43 C. 26 D. 29 二、完成下列填空题(每空3分,共9分)。 1.在顺序表L第i个位置插入一个新的元素e: Status ListInsert_Sq(SqList &L , int i , ET e){ if ( iL.length+1) return ERROR; if(L.length >= L.listsize){ p=(ET*)realloc(L.elem,(L.listsize+10)*sizeof(ET)); if (p==NULL) exit(OVERFLOW); L.elem=p; } for( j=L.length ; j>=i ; --j ) L.elem[j]=L.elem[j-1] ; L.elem[j]=e ; ++L.length ; return OK; } 2. 删除双向链表p所指向的节点算法: status delete(DuLinkList L, DuLinkList p) { if (p= =L) return ERROR; else { p->prior->next=p->next; p->next->prior=p->prior ; } free(p); return OK; } 三、编程题(共27分)。 1. (共12分)用顺序表表示集合,设计算法实现集合的求差集运算,要求不另外开辟空间。 顺序表的存储结构定义如下: #define Maxsize 100 typedef struct { ElemType data[MaxSize]; // ElemType表示不确定的数据类型 int length; // length表示线性表的长度 }SqList; 将如下函数,伪码补充完整(8分),代码前先用文字描述自己的算法思想(4分)。 文字描述算法:略(4分) void Difference(SqList A, SqList B) {//参考代码如下如下(8分) for (i=0;i<A.length;i++) for(j=0;j<B.length;j++) if(A.data[i]==B.data[j]) { A.data[i]=’#’; break; } for (k=0,i=0;inext == L) return; p = L; while (p->next != L)   { if (p->next->data != e) P = p->next; else { q = p->next;p->next = q->next; free(q);} } } 时间复杂度分析:(2分) 时间复杂度为O(n)。
精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功! \数据结构flash演示\版本1 \数据结构flash演示\版本2 \数据结构flash演示\版本3 \数据结构flash演示\版本4 \数据结构flash演示\版本5 \数据结构flash演示\版本1\1-4 算法和算法分析 冒泡排序.swf \数据结构flash演示\版本1\10-1-1插入排序.swf \数据结构flash演示\版本1\10-2-2直接插入排序.swf \数据结构flash演示\版本1\10-2-3折半插入排序.swf \数据结构flash演示\版本1\10-2-4-1直接插入排序.swf \数据结构flash演示\版本1\10-2-4表插入排序.swf \数据结构flash演示\版本1\10-2-5希尔排序.swf \数据结构flash演示\版本1\10-3-1起泡排序.swf \数据结构flash演示\版本1\10-3-2起泡排序.swf \数据结构flash演示\版本1\10-3-4快速排序.swf \数据结构flash演示\版本1\10-4-2堆排序大顶堆.swf \数据结构flash演示\版本1\10-4-3堆排序大顶堆.swf \数据结构flash演示\版本1\10-4-4堆排序建立堆.swf \数据结构flash演示\版本1\10-5-2归并排序.swf \数据结构flash演示\版本1\10-6-1多关键字排序.swf \数据结构flash演示\版本1\10-6-2分配收集.swf \数据结构flash演示\版本1\10-6-3分配收集2.swf \数据结构flash演示\版本1\10-6-4计数排序.swf \数据结构flash演示\版本1\2-2-1顺序表的查找.swf \数据结构flash演示\版本1\2-2-2顺序表的插入演示.swf \数据结构flash演示\版本1\2-2-3顺序表的插入算法.swf \数据结构flash演示\版本1\2-2-4顺序表的删除演示.swf \数据结构flash演示\版本1\2-2-5顺序表的删除算法.swf \数据结构flash演示\版本1\2-2-6.swf \数据结构flash演示\版本1\2-2-7.swf \数据结构flash演示\版本1\2-2-8.swf \数据结构flash演示\版本1\2-2-9.swf \数据结构flash演示\版本1\2-3-1.1单链表删除节点.swf \数据结构flash演示\版本1\2-3-1.2单链插入节点.swf \数据结构flash演示\版本1\2-3-1单链表getElem.swf \数据结构flash演示\版本1\2-3-2单链表头插法.swf \数据结构flash演示\版本1\2-3-3.swf \数据结构flash演示\版本1\2-3-4.swf \数据结构flash演示\版本1\2-3-5头结点的双向循环链表.swf \数据结构flash演示\版本1\2-3-6双向链表的插入.swf \数据结构flash演示\版本1\2-3-7双向链表的删除.swf \数据结构flash演示\版本1\2-3-8.swf \数据结构flash演示\版本1\2-3-9两个有序链表的连接.swf \数据结构flash演示\版本1\3-2-1栈的应用举例-进制转换.swf \数据结构flash演示\版本1\3-3-10链队列.swf \数据结构flash演示\版本1\3-3-11链队列-入队.swf \数据结构flash演示\版本1\3-3-12-1链队列出队.swf \数据结构flash演示\版本1\3-3-12-2链队列出队-队列空.swf \数据结构flash演示\版本1\3-3-13循环队列.swf \数据结构flash演示\版本1\3-3-1栈的应用举例-走迷宫-有解.swf \数据结构flash演示\版本1\3-3-2栈的应用举例-走迷宫-无解.swf \数据结构flash演示\版本1\3-3-4后缀式.swf \数据结构flash演示\版本1\3-3-5后缀式.swf \数据结构flash演示\版本1\3-3-6后缀式.swf \数据结构flash演示\版本1\3-3-7后缀式.swf \数据结构flash演示\版本1\3-3-9栈的应用举例-汉诺塔.swf \数据结构flash演示\版本1\3-4-1杨辉三角.swf \数据结构flash演示\版本1\3-4-2离散事件模拟.swf \数据结构flash演示\版本1\4-1-1串的定位操作.swf \数据结构flash演示\版本1\4-1-2串的替换.s

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值