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

📄 4-4-11.c

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

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

int DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len){
		LinkedList p,q,s,prep,pres;
		int k;
		if(!La->next || !Lb->next || len <= 0) return -1;
		p = La->next; prep = La;
		while(p && p->key != key1) {	/*查找表A中键值为key1的结点*/
			prep = p; p = p->next;
		}
		if(!p) return -1;			/*表A中不存在键值为key1的结点*/
		q = p; k = 1;
		while (q && k < len ) {	/*在表A中找出待删除的len个结点*/
	 		q = q->next; k++;
		}
		if(!q) return -1;			/*表A中不存在要被删除的len个结点*/
		s = Lb->next; pres = Lb ;
		while(s && s->key != key2) {	/*查找表B中键值为key2的结点*/
			pres = s;s = s->next;
		}
		if(!s) return -1;			/*表B中不存在键值为key2的结点*/
	 	 prep->next  = q->next;		/*将表A中的len个结点删除*/
		q->next = s ;
		pres->next = p;				/*将len个结点移至表B*/
		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[]={3,5,7,8,23},b[]={1,2,3,4,5,6,7,8,9,10};
  LinkedList linka,linkb;
  linka=Inilink(a,5);
  linkb=Inilink(b,10);
  DelA_InsB(linka,linkb,5,2,4);
  while(linkb)
  {
	printf(" %d ",linkb->key);
	linkb=linkb->next;
  }

}

⌨️ 快捷键说明

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