单链表应用问题--课本素材
来源:互联网 发布:淘宝信誉刷到皇冠 编辑:程序博客网 时间:2024/05/16 12:55
1. 设计算法,拆分单链表
源代码:
#include <stdio.h>#include <malloc.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} LinkList;void CreateListR(LinkList *&l,ElemType a[],int n){ LinkList *s,*r; int i; l=(LinkList *)malloc(sizeof(LinkList)); r=l; for(i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}void DispList(LinkList *l){ LinkList *p=l->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}void Split(LinkList *l,LinkList *&l1,LinkList *&l2){ LinkList *p=l->next,*q,*r; l1=l; r=l; l2=(LinkList *)malloc(sizeof(LinkList)); l2->next=NULL; while(p!=NULL) { r->next=p; r=p; p=p->next; q=p->next; p->next=l2->next; l2->next=p; p=q; } r->next=NULL;}int main(){ ElemType a[1000]; LinkList *l,*l1,*l2; int i,n; printf("请输入节点数:\n"); scanf("%d",&n); printf("请输入各节点元素:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); CreateListR(l,a,n); printf("拆分前单链表中各节点为:\n"); DispList(l); Split(l,l1,l2); printf("拆分后单链表中各节点为:\n"); DispList(l1); DispList(l2); return 0;}
运行结果:
2. 设计算法,删除一个单链表中元素值最大的节点
源代码:
#include <stdio.h>#include <malloc.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} LinkList;void CreateListR(LinkList *&l,ElemType a[],int n){ LinkList *s,*r; int i; l=(LinkList *)malloc(sizeof(LinkList)); r=l; for(i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}void DispList(LinkList *l){ LinkList *p=l->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}void Deletemaxnode(LinkList *&l){ LinkList *pre,*p,*q; LinkList *maxpre,*maxp; pre=l; p=l->next; q=l->next; maxpre=pre; maxp=p; while(p!=NULL) { if(maxp->data<p->data) { maxp=p; maxpre=pre; } pre=p; p=p->next; } maxpre->next=maxp->next; free(maxp);}int main(){ ElemType a[1000]; LinkList *l; int i,n; printf("请输入节点数:\n"); scanf("%d",&n); printf("请输入各节点元素:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); CreateListR(l,a,n); printf("删除前单链表中各节点为:\n"); DispList(l); Deletemaxnode(l); printf("删除后单链表中各节点为:\n"); DispList(l); return 0;}
运行结果:
3. 有一个带头节点的单链表L(数据节点至少一个),设计算法使其元素递增有序排列
源代码:
#include <stdio.h>#include <malloc.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} LinkList;void CreateListR(LinkList *&l,ElemType a[],int n){ LinkList *s,*r; int i; l=(LinkList *)malloc(sizeof(LinkList)); r=l; for(i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}void DispList(LinkList *l){ LinkList *p=l->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}void Sort(LinkList *&l){ LinkList *pre,*p,*q; p=l->next->next; l->next->next=NULL; while(p!=NULL) { q=p->next; pre=l; while(pre->next!=NULL && pre->next->data<p->data) pre=pre->next; p->next=pre->next; pre->next=p; p=q; }}int main(){ ElemType a[1000]; LinkList *l; int i,n; printf("请输入节点数:\n"); scanf("%d",&n); printf("请输入各节点元素:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); CreateListR(l,a,n); Sort(l); printf("排序后单链表中各节点为:\n"); DispList(l); return 0;}
程序截图:
0 0
- 单链表应用问题--课本素材
- HTML5多媒体素材应用
- 约瑟夫环问题 //课本实例
- HTML5多媒体素材的应用
- iOS应用中的素材讲解
- 装载问题(2) --课本实现
- 计算机组成原理课本的问题总结
- html 问题随记+素材积累
- 素材
- 素材
- 素材
- 素材
- 素材
- 素材
- 上传 Applestore 应用所需要的素材
- 课本8.19 kite问题的NP完全问题证明
- 关于统计课本页数出现数字的问题【举一反三】
- 课本8.3证明 吝啬SAT问题是NP完全问题
- Javascript中事件委托(delegate)是如何运行的
- 第4周 项目3 -- 单链表应用(3)
- How to solve “Plugin execution not covered by lifecycle configuration” for Spring Data Maven Builds
- poj3070 Fibonacci 数论专题
- MVC
- 单链表应用问题--课本素材
- red-black tree
- auto,register,extern,static使用及区别
- CocoPods基本使用
- [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
- Codeforces Round 341D
- 通用Adapter设计,SparseArray+泛型+回调的使用
- UVa OJ 12265 - Selling Land
- Java数组