数据结构->单链表的操作
来源:互联网 发布:淘宝访问量怎么提高 编辑:程序博客网 时间:2024/05/16 08:55
1、随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。
2、遍历单向链表。
3、把单向链表中元素逆置(不允许申请新的结点空间)。
4、在单向链表中删除所有的偶数元素结点。
5、编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。
6、利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。
7、利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。
8、编写一个主函数,调试上述算法。
#include <stdio.h>#include <stdlib.h>#define Elemtype inttypedef struct node{ Elemtype data; struct node *next;} Lnode;void creat(Lnode *h){ int data; Lnode *p=h,*pp; scanf("%d",&data); while(data!=-1) { pp=(Lnode*)malloc(sizeof(Lnode)); pp->next=NULL; pp->data=data; p->next=pp; p=pp; scanf("%d",&data); }}void bianli(Lnode *h){ h=h->next; while(h!=NULL) { printf("%d ",h->data); h=h->next; } puts("");}void nizhi(Lnode *h){ Lnode *p1=h,*p2; p1=h->next; h->next=NULL; while(p1!=NULL) { p2=p1; p1=p1->next; p2->next=NULL; p2->next=h->next; h->next=p2; }}void deleted(Lnode *h){ Lnode *p1,*p2; p1=h; p2=h->next; while(p2!=NULL) { if(p2->data%2==0) { p1->next=p2->next; free(p2); p2=p1->next; } else { p1=p2; p2=p2->next; } }}void charu(Lnode *h,Lnode *tt){ Lnode *ll=h->next,*ss=h; if(h->next==NULL) { h->next=tt; return; } while(ll->data<tt->data&&ll->next!=NULL) { // printf("%d\n",ll->data); ss=ll; ll=ll->next; } if(ll->next!=NULL) { tt->next=ss->next; ss->next=tt; } else { if(ll->data>tt->data) { tt->next=ss->next; ss->next=tt; } else { tt->next=ll->next; ll->next=tt; } }}/*void creat2(Lnode *h){ int data,f=0; Lnode *p=h,*pp,*ll=h->next,*ss=h; scanf("%d",&data); while(data!=-1) { pp=(Lnode*)malloc(sizeof(Lnode)); pp->next=NULL; pp->data=data; if(h->next==NULL) { p->next=pp; p=pp; } else for(ll=h->next,ss=h;ll!=NULL;ll=ll->next) { printf("*%d\n",ll->data); if(ll->data<data) continue; else { pp->next=ss->next; ss->next=pp; break; } ss=ll; } else { while(ll->data<=data) { ss=ll; ll=ll->next; } pp->next=ss->next; ss->next=pp; } ll=h->next; ss=h; scanf("%d",&data); }}*/void creat2(Lnode *h){ int data; Lnode *p=h,*pp; scanf("%d",&data); while(data!=-1) { pp=(Lnode*)malloc(sizeof(Lnode)); pp->next=NULL; pp->data=data; charu(p,pp); scanf("%d",&data); }}void hebing(Lnode *h1,Lnode *h2){ Lnode *p1,*p2; p1=h2->next; while(p1!=NULL) { p2=p1; p1=p1->next; charu(h1,p2); }}int main(){ Lnode *h=(Lnode*)malloc(sizeof(Lnode)); h->next=NULL; creat(h); printf("遍历结果:"); bianli(h); nizhi(h); printf("逆置结果:"); bianli(h); deleted(h); printf("删除结果:"); bianli(h); Lnode *tt=(Lnode*)malloc(sizeof(Lnode)); printf("输入插入数:"); scanf("%d",&tt->data); charu(h,tt); printf("插入结果:"); bianli(h); Lnode *h1=(Lnode*)malloc(sizeof(Lnode)); h1->next=NULL; creat2(h1); printf("创建非递减有序链表h1结果:"); bianli(h1); Lnode *h2=(Lnode*)malloc(sizeof(Lnode)); h2->next=NULL; creat2(h2); printf("创建非递减有序链表h2结果:"); bianli(h2); printf("合并结果为:"); hebing(h1,h2); bianli(h1); return 0;}
阅读全文
0 0
- 数据结构-单链表的操作
- 数据结构->单链表的操作
- 数据结构 单链表的删除操作
- 数据结构单链表的各种操作
- 数据结构—单链表的操作
- 单链表的基本操作-数据结构
- 【数据结构】单链表的基本操作
- 【数据结构】单链表的基本操作
- 数据结构--单链表的基本操作
- 数据结构-单链表的基本操作
- 数据结构学习一(单链表的操作)
- 实战数据结构(1)_单链表的操作
- 数据结构——单链表的基本操作
- 数据结构之 单链表的实现与操作
- 数据结构——单链表的基本操作
- 数据结构 ——单链表操作的算法
- 【C++/数据结构】单链表的基本操作
- 严蔚敏数据结构单链表的所有基本操作
- spring配置bean的细节一
- 怎么高效学习
- [DP-LIS] POJ 2533
- 给定一棵二叉树,找到它的最小深度。最小深度是从根节点到最近叶节点的最短路径上的节点数量
- nexus安装
- 数据结构->单链表的操作
- CSS3 width:fit-content属性
- HTML笔记3
- 从一道题看为什么你的工作年限不值钱
- CUDA动态并行
- python web py入门-1-web.py简介和安装
- csdn 登录经常卡住无法登录
- 接口测试基础-HTTP协议
- 数据结构->双链表的操作