链表删除并合并

首先,这是一个有点小问题的程序

链表是无头结点尾插法
但是	不能A表第一个元素开始截取(应该是无头节点的问题),望大佬指出问题.
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
	int data;//数据域 
	struct node* next;//指针域	
}LNode, * LinkList;
LinkList linklistA() {
	LinkList A;
	LNode* s,*end=A=NULL;
	int x;
	printf("请输入A表内容\n");
	scanf("%d",&x);	
	while (x != -1) {
		s = (LinkList)malloc(sizeof(LNode));
		s->data = x;
		s->next=NULL;
		if(A==NULL){
			A=s;
		}else{
	    	end->next=s;
		}
			end=s;	
		printf("请输入A表内容\n");
		scanf("%d",&x);
	}
	return A;
}
LinkList linklistB() {
	LinkList B;
	LNode* s,*end=B=NULL;
	int x;
	printf("请输入B表内容\n");
	scanf("%d",&x);	
	while (x != -1) {
		s = (LinkList)malloc(sizeof(LNode));
		s->data = x;
		s->next=NULL;
		if(B==NULL){
			B=s;
		}else{
	    	end->next=s;
		}
			end=s;	
		printf("请输入B表内容\n");
		scanf("%d",&x);
	}
	return B;
}
//截取a表某段 
LinkList deletel(LinkList A,int i,int len){

	
	int x=1;
	while(1){
		if(i==1) break;
		x++;
			if(x==i) break;
		A=A->next;
	}
	LinkList s=A->next;
	LinkList s1=A;
	 
  LinkList h=s;
  
	
		int j=0;
    	 while(1){
			j++;
			if(j==len) break; 
			s=s->next;	
    		}			 					
	A->next=s->next;
	s->next=NULL;
	s1->next=NULL;
	
return h;
}
//插入b表指定位置后 
void mk(LinkList B,LinkList h,int j){
	int s=0;
	while(1){
		s++;
		if(s==j) break;
		B=B->next;
	}	
	B->next=h;	
}
int main(){
	
	LNode* A, * B;
	LinkList r=NULL;
	A = NULL, B = NULL;
	A = linklistA();
	B=linklistB();
	
	int i,j,len;
	printf("请输入截取位置和长度:\n");
	scanf("%d %d",&i,&len);
    LinkList h=deletel(A,i,len);
    printf("请输入插入的位置:\n");
    scanf("%d",&j);
    mk(B,h,j);
	
//	
//    LinkList h=deletel(A,3,2);
//    mk(B,h,2);
	while(B){
		printf("%d ",B->data);
		B=B->next;
	}
return 0;	
}```

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值