编程复习4链表移动
来源:互联网 发布:java urlencoder 乱码 编辑:程序博客网 时间:2024/05/17 08:25
编写一个函数,将给定的带有头结点的单向链表的前m个节点移到链尾。
结构的定义:
struct node
{ int num;
struct node *next;
}
函数的原型:struct node *monenode( struct node *head,int m ), 其中:参数head 是单向链表的头指针;参数m 是要移动的节点数。函数的返回值是单向链表的头指针。
例如当m=4时:
其实要写的就是一个函数,我直接贴出完整的程序(预设代码+要求提交的程序)
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include <stdio.h>#include <stdlib.h>typedef struct numLink{int no;struct numLink *next;}NODE;NODE *monenode( NODE *head, int m );void SetLink( NODE *h, int n ){NODE *p=NULL, *q=NULL;int i;for( i=0; i<n; i++){p = (NODE *)malloc(sizeof(NODE));p->no = i+1;p->next = NULL;if( h->next == NULL ){h->next = p;q = p;}else{q->next = p;q = q->next;}}return;}int main( ){int n,m;NODE *head=NULL, *q=NULL;scanf("%d%d",&n,&m);head = (NODE *)malloc(sizeof(NODE));head->no = -1;head->next = NULL;SetLink( head, n );q = monenode( head, m );do{printf("%d ",q->next->no);q = q->next;}while( q->next != NULL ); printf("\n");return 0;}/* PRESET CODE END - NEVER TOUCH CODE ABOVE */NODE *monenode( NODE *head, int m ){NODE * p1,*p2,*p3;int i=0;p1 =p2=p3=head;while(p1->next!=NULL && i<m){p1=p1->next;i++;}if(p1->next != NULL){//while结束后p1指向元素m p2 = p1->next;p1->next=NULL;//把后面的元素放在前面p1 = p2;while(p1 != NULL){p2 = p1->next; //暂存p1->next = p3->next;p3->next = p1;p3=p3->next;p1 = p2;}}return head;}
- 编程复习4链表移动
- Java链表反转(复习.复习)
- 数据结构复习--数组的移动
- 数据结构复习--数组的移动
- 复习链表操作
- 链表复习----C++
- 链表复习
- 【数据结构链表复习】
- 链表的复习
- 网络编程复习
- TCP协议编程复习
- C++网络编程复习
- 【学习+复习】编程语言
- linux网络编程复习
- Linux--线程编程 复习
- shell编程复习 第一次
- shell编程复习 第二次
- 网络编程复习_Exp1
- sqlite3使用点滴
- Android:Activity的LaunchMode比较
- 第十二章 BIRT报表的部署与配置
- 为什么V8引擎这么快
- 基于规则和基于统计的区别、方法简介
- 编程复习4链表移动
- Struts 模板
- C#visual(控件)的打印
- CSS中内容的剪切属性clip
- 英语音标
- C++ 读取键盘输入(cin/cin.getline()/cin.get()/cin.clear())
- HighCharts +java 做图 由于看不懂JfreeChar 搜到可用HighCharts作图的一个js,还简单,下面是自己的一个新增用户的统计图
- Lucene:按词条搜索—TermQuery
- 建立自己的TOAST