(4.1.1)--直播-线性表作业讲解.ppt
《(4.1.1)--直播-线性表作业讲解.ppt》由会员分享,可在线阅读,更多相关《(4.1.1)--直播-线性表作业讲解.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 线性结构单链表作业程序设计课程实践常用链表类型一般结点类型定义如下:struct Node DataElem data;struct Node*next;struct Node *p,*q;/声明指针型变量p、q常用链表类型单链表的常用操作单链表的常用操作单链表的常用操作单链表应用举例根据单链表处理知识,直接完成递增有序单链表构造、插入、显示、销毁的典型案例。请输入若干个需要插入的正整数,非正整数代表输入结束:5 2 4 1 9 8 3 01-2-3-4-5-8-9structNode intdata;struct Node*next;/将元素插入有序单链表中,插入后仍然有序void
2、Insert(struct Node*la,int x);/销毁单链表void Destory(struct Node*la);/打印单链表void Print(struct Node*la);9/动态分配一个结点,返回结点指针/分配失败时,简化程序,退出运行struct Node*NewNode()struct Node*p;p=(struct Node*)malloc(sizeof(struct Node);if(p=NULL)/分配失败 printf(Error:out of memoryn);exit(-1);/简化程序,退出运行 return p;10/将元素插入有序单链表中,插入后
3、仍然有序void Insert(struct Node*la,int x)struct Node*q=NewNode();/申请结点 q-data=x;/查找合适插入位置 struct Node*p=la;while(p-next&x p-next-data)p=p-next;/往后移一位置 /将结点插入p所指结点后 q-next=p-next;p-next=q;11/打印单链表void Print(struct Node*la)la=la-next;/头结点无数据 if (la)/数据比-多一个 printf(%d,la-data);la=la-next;while(la)printf(-%
4、d,la-data);la=la-next;printf(n);12/销毁单链表void Destory(struct Node*la)while(la)struct Node*q=la-next;free(la);/释放指针所指结点 la=q;13int main()/建立带头节点的单链表 struct Node*la=NewNode();la-next=NULL;intx;printf(请输入若干个需要插入的正整数,非正整数代表输入结束:n);scanf(%d,&x);while(x 0)/将元素插入有序单链表中,插入后仍然有序 Insert(la,x);scanf(%d,&x);(待续)
5、14 /打印单链表 Print(la);/销毁单链表,避免内存泄漏 Destory(la);return 0;运行情况如下:请输入若干个需要插入的正整数,非正整数代表输入结束:5 2 4 1 9 8 3 01-2-3-4-5-8-915课后作业第1题1.编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将非正整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁。程序不可存在内存泄漏。运行情况如下:-5 2 4 -1 9 8 -3 02-4-8-9-5-3-1-0课后作业第1题(1)定义链表结构体struct Node int data;s
6、truct Node*next;课后作业第1题(2)搭建程序整体框架课后作业第1题(3)实现各模块功能课后作业第1题课后作业第1题课后作业第1题课后作业第1题int main()struct Node*la1=NewNode();la1-next=NULL;struct Node*la2=NewNode();la2-next=NULL;intx;while(scanf(%d,&x)!=EOF)if(x 0)Insert(la1,x);else Insert(la2,x);Print(la1);Print(la2);Destory(la1);Destory(la2);return 0;第一章35
7、910-127la1la1la2la2第一章第一章第一章单链表基本操作的实现/链表结点类型struct Node DataElem data;struct Node*next;/线性表类型struct List struct Node*pHead;struct Node*pTail;typedef struct Node*Position;/线性表中位置类型30 1.创建空线性表/空表管理的单链表只有一个头结点,失败时首尾指针为NULLstruct List Create()struct List list;/申请一个结点 list.pHead=list.pTail=(struct Node*
8、)malloc(sizeof(struct Node);if(list.pHead!=NULL)list.pHead-next=NULL;/后续无结点 return list;312.线性表清空/释放链表中除头结点外所有结点void Clear(struct List*pList)struct Node*p=pList-pHead-next;/从头结点后结点开始删除 while(p!=NULL)/直到最后 struct Node*q=p;/记住要释放结点 p=p-next;/准备释放下一个 free(q);/释放结点,释放后不可再访问结点 pList-pHead-next=NULL;/头结点后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 4.1 直播 线性 作业 讲解
限制150内