⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4-4-12.c

📁 2005软件工程师考试下午编程题源代码
💻 C
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/

#include <stdio.h>
#include <malloc.h>
typedef struct node{
int key;
struct node *next;
}*LinkedList;

int movetoend(LinkedList La, int i){
LinkedList p,q,prep;
int k = 1;
p = La->next;prep = La;
while(p&&p->key != i) {/*查找第i个元素并使指针p指向该结点*/
prep = p; p = p->next;k++;
}
if(!p || k > i) return -1;
if(!p->next) /*第i个元素结点已经是表尾结点,则无需移动*/
return 0;
q = p;
while(q->next) q = q->next; /*查找表尾并使q指向表尾结点*/
 prep->next  = p->next;
p->next = NULL;
q->next = p;
return 0;
}

//下面的代码是测试时加进来的.
LinkedList Inilink(int *data,int n)
{ LinkedList head,p,q;
  int i;
  p=(LinkedList)malloc(sizeof(LinkedList));
  p->key=data[0];
  p->next=NULL;
  head=p;
  for(i=1;i<n;i++)
  {
	 q=(LinkedList)malloc(sizeof(LinkedList));
	 q->key=data[i];
	 q->next=NULL;
	 p->next=q;
	 p=q;
   }
return head;

}
main()
{ int a[]={13,15,17,18,23,1,2,3,4,5,6,7,8,9,10};
  LinkedList linka;
  linka=Inilink(a,15);
  movetoend(linka,23);
  while(linka)
  {
	printf(" %d ",linka->key);
	linka=linka->next;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -