View Code of Problem 79

#include<cstdlib>
#include<cstdio>
typedef struct Node{
	int data;
	struct Node * next;
}Node,*L;
int main(){
	int n,m;
	scanf("%d",&n);
	L linklist;
	linklist=(L)malloc(sizeof(Node));
	Node *r=linklist;
	for(int i=0;i<n;i++){					// 尾插法建立单链表 
		int a;
		scanf("%d",&a);
		Node *q=(Node *)malloc(sizeof(Node));
		q->data=a;
		r->next=q;
		r=q;
	}
	r->next=NULL;
	scanf("%d",&m);
	Node *p1=linklist,*p2=linklist,*p3;
	for(int i=0;i<m;i++){					//确定位移个数 
		p2=p2->next;
	}
	while(p2!=NULL){						//p1指针所指的数即为移动后的第一位 
		p2=p2->next;
		p1=p1->next;
	}
	p3=p1;
	while(p1!=NULL){
		printf("%d ",p1->data);
		p1=p1->next;
	}
	while(linklist->next!=p3){				//linklist为头结点
		printf("%d ",linklist->next->data);
		linklist=linklist->next;
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 79