zoukankan      html  css  js  c++  java
  • 线性表的合并

    /*
    	线性表的合并 
    */ 
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <stdbool.h>
    typedef int ElemType;
    
    typedef struct Lnode{
    	ElemType data;
    	struct Lnode * next;
    }LNode, * LinkList;
    
    /*
    	单链表的建立:尾插法 
    */
    LinkList CreateList_R(){
    	LinkList L = (LinkList)malloc(sizeof(LNode));
    	L->next = NULL;
    	int x;
    	LinkList p, r = L; 
    	scanf("%d", &x);
    	while(x != 9999){
    		p = (LinkList)malloc(sizeof(LNode));
    		p->data = x;
    		p->next = NULL;
    		r->next = p;
    		r = p; 
    		scanf("%d", &x);
    	} 
    	return L;
    }
    
    /*
    	求单链表L的长度 
    */
    int ListLength_L(LinkList L){
    	int len = 0;
    	LinkList p;
    	p = L->next;
    	while(p){
    		p = p->next;
    		len++;
    	}
    	return len;
    }
    
    /*
    	取值:取单链表中第i个元素的内容 
    */
    int  GetElem_L(LinkList L, int i, ElemType * e){
    	LinkList p;
    	p = L->next;
    	int j = 1;
    	while(p && i > j){
    		p = p->next;
    		j++;
    	}
    	if(!p || j > i ) return 0;
    	*e = p->data;
    	return 1;
    }
    
    /*
    	查找:按值查找:根据指定数据获取数据所在位置(序号)
    */
    int LocateElem_L2(LinkList L, ElemType e){
    	LinkList p;
    	p = L->next;
    	int j = 1;
    	while(p && p->data != e){
    		p = p->next;
    		j++;
    	}
    	if(p)return j;
    	else return 0;
    }
    /*
    	插入:在第i后结点插入新结点 
    */
    int ListInsert_L(LinkList L, int i, ElemType e){
    	LinkList p;
    	p = L;
    	int j = 0;
    	while(p && i-1 > j){
    		p = p->next;
    		j++;
    	}
    	if(!p || j > i - 1) return -1;
    	LinkList s = (LinkList)malloc(sizeof(LNode));
    	s->data = e;
    	s->next = p->next;
    	p->next = s;
    	return 1;
    }
    
    /*
    	线性表的合并 
    */ 
    void Union(LinkList La, LinkList Lb){
    	int La_len = ListLength_L(La);
    	int Lb_len = ListLength_L(Lb);
    	int i;
    	int e;
    	for(i = 1; i <= Lb_len; i++){
    		GetElem_L(Lb, i, &e);
    		if(!LocateElem_L2(La, e)){
    			ListInsert_L(La, La_len++, e);
    		}
    	}
    }
    
    /*
    	链表的遍历 
    */
    void traverse_list(LinkList L){
    	LinkList p;
    	p = L->next;
    	while(p){
    		printf("%d ", p->data);
    		p = p->next;
    	}
    	printf("
    ");
    	return;
    }
    int main(){
    	//第一个单链表La
    	printf("--------------创建第一个单链表------------
    "); 
    	LinkList La = CreateList_R();
    	//第二个单链表La
    	printf("--------------创建第二个单链表------------
    ");
    	LinkList Lb = CreateList_R();
    	Union(La, Lb);
    	traverse_list(La);
    	return 0;
    }
    
    我亦无他,惟手熟尔
  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/AsuraPlus/p/15415732.html
Copyright © 2011-2022 走看看