#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.