欢迎来到天天文库
浏览记录
ID:17427412
大小:113.50 KB
页数:22页
时间:2018-08-31
《单链表的操作1ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单链表的操作Week04&Week05建立链表输出链表链表的删除链表的插入需要掌握的内容建立链表(静态/动态)静态建立structstudenta,b,c,*head,*p;/*建立链表的三个结点*/a.num=1001;a.score=95;b.num=1002;b.score=85.5;c.num=1003;c.score=77;/*利用指针将三个结点连接到一起,head为头结点*/head=&a;a.next=&b;b.next=&c;c.next=NULL;静态链表——所有结点都是在程序中定义的,不是临时开
2、辟的,也不能用完后释放动态建立建立链表(静态/动态)动态链表——在执行的过程中从无到有建立一个链表,即一个一个开辟结点和输入各结点数据,并建立前后链的关系while(){malloc()开辟新的结点;把新结点连接到链表当中去;}思考:头插法PK尾插法输出链表已知链表的头指针,将链表中的结点内容依次输出p=head;while(p){printf(“%d”,p->data);p=p->next;}p=head;if(head!=NULL)do{printf(“%d”,p->data);p=p->next;}while
3、(p!=NULL)链表的删除ABCDEABCDE从动态链表中删去一个结点,只要撤销原来的链接关系,把它从链表中分离开来即可链表的删除ABCheadABCheadp1p2p3p1->next=p3;p1->next=p2->next;例1.输入104表示要求删除学号为104的结点……101102110headp……101102110headqp……101102110headqp103……101103110headqp104例1.输入104表示要求删除学号为104的结点(例4_1)……q->next=p->next;p
4、rintf("请输入想删除的字符");scanf("%c",&ch);p=head;while(p&&p->data!=ch){q=p;p=p->next;}if(p==NULL)printf("链表中无此字符");elseif(p==head)head=p->next;elseq->next=p->next;例1.输入104表示要求删除学号为104的结点P=NULLp走到表尾P->data=ch找到要删除的结点未找到结点删除的是第一个结点删除的是中间结点链表的插入问题:输入数据的同时,将数据插入到链表中,
5、并且保持链表中数据有序分析:第一个:接到head后面第二个:查找合适的插入位置插入,并保持链表的前后链第三个……第N个……ACEheadBqpq->next=s;s->next=p;ss->next=q->next;q->next=s;或者链表的插入printf(“请输入待插入字符");scanf("%c",&ch);s=(student*)malloc(LEN);s->data=ch;s->next=NULL;p=head;while(p&&ch>p->data){q=p;p=p->next;}q->next
6、=s;s->next=p;接受输入的数据,新生成一个新的结点SBs寻找合适的插入位置AheadCqps插入到p和q之间链表的插入考虑插入结点时的几种特殊情况插入后为第一个结点插入后为最后一个结点ACEheadspACEheadsq链表的插入插入后为第一个结点ACEheadspp=head;while(p&&ch>p->data){q=p;p=p->next;}if(p==head){head=s;s->next=p;}上一页正常情况+特殊情况p=head;while(p&&ch>p->data){q=p;p=p->
7、next;}q->next=s;s->next=p;p=head;while(p&&ch>p->data){q=p;p=p->next;}if(p==head){head=s;s->next=p;}main(){printf(“输入待插入字符");scanf("%c",&ch);s=(student*)malloc(LEN);s->data=ch;s->next=NULL;}//mainmain(){printf("请输入待插入字符");scanf("%c",&ch);s=(student*)malloc(
8、LEN);s->data=ch;s->next=NULL;p=head;while(p&&ch>p->data){q=p;p=p->next;}if(p==head){head=s;s->next=p;}else{q->next=s;s->next=p;}}//main正常情况+特殊情况(例4_2)单链表的综合使用(例4_3)main(){student*h
此文档下载收益归作者所有