(a)p指向第一个结点.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(a)p指向第一个结点

1.int,int*; char,char*; double,double*; student(自定义),student*….,这些数据类型各占用多少内存,编程验证之。 2.为什么c语言中定义数组如:double a[NUM]; 时,NUM必须为常数?试从内存分配的角度讨论一下。 3.下面的程序: int * func1() { int *p, x = 100; p = x; return p; } main() { int *pi; pi = func1(); printf(%d, *pi); } 1)试判断程序的输出。 2)你认为该程序有没有错误,为什么?应该如何改正? 第2章 线性表 2.1 线性表抽象数据类型 2.2 顺序表(线性表的顺序实现) 2.3 单链表 (2)头指针、头结点和首元结点的区别 (3)带头结点单链表和不带头结点单链表的比较 2.4 循环单链表 2.5 双向链表 2.6 静态链表 2.7 设计举例 作 业 P55 2-6, 2-7, 2-8, 2-9 补 :1) 如果把顺序表P29~32的内存分配改为动态的,那么主要需要修改那些地方? 2)列出在双向链表中删除一个结点的详细步骤,可以画图说明,并写出关键语句。 在双向链表中:设指针p指向第i个数据元素结点,则p-next指向第i+1个数据元素结点,p-next-prior仍指向第i个数据元素结点,即p-next-prior=p;同样p-prior-next=p。 循环双向链表的插入过程如图示: a0 ai an-1 head … x s … ai-1 × × … ④ ① ② ③ p 删除过程如图示: ai+1 ai an-1 head … … ai-1 × × ① ② p 在数组中增加一个(或两个)指针域用来存放下一个(或上一个)数据元素在数组中的下标,从而构成用数组构造的单链表。因为数组内存空间的申请方式是静态的,所以称为静态链表,增加的指针称做仿真指针。结构如下: A B C E ∧ head D (a) 常规链表 A 1 B 2 C 3 D 4 E -1 ┇ (b) 静态链表一 data next 0 1 2 3 4 ┇ maxSize-1 A 2 E -1 B 4 D 1 C 3 ┇ (b) 静态链表一 data next 0 1 2 3 4 ┇ maxSize-1 例2-4 设计一个顺序表的删除函数,把顺序表L中的数据元素x删除。 可以看做是对顺序表类功能的扩充,有两种方法: 一种方法是另外设计一个完成相应功能的函数; 另一种方法是重新设计一个增加了相应成员函数的顺序表类 本例采用第一种,程序如下: int ListDataDelete(SeqList L,DataType x) { int i,j; for(i=0;iL.size;i++) //寻找元素x if(x==L.list[i]) break; if(i==L.size) return 0; //未寻找到元素x else //寻找到元素x { for(j=i;jL.size;j++) //元素依次前移 L.list[j]=L.list[j+1]; L.size--; //元素个数减1 return 1; } } 函数要访问顺序表类的私有成分(size和list),所以要在顺序表类中添加一个说明上述函数为友元函数的语句: friend int ListDataDelete(SeqList L,DataType x); 例2-5 构造一个顺序表的删除函数,把顺序表L中所有值相同的数据元素x全部删除。 本例采用成员函数的办法进行设计: 程序如下: class SeqList { protected: DataType *list; //数组 int maxSize; //最大元素个数 int size; //当前元素个数 public: SeqList(int max=0) //构造函数 ~SeqList(void); //析构函数 int size(void) const; //取当前数据元

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档