1. 程式人生 > >用連結串列實現兩個集合求並集

用連結串列實現兩個集合求並集

 #include<stdio.h>
#include<stdlib.h>
#include<time.h>

 typedef struct node{
     int data;
     struct node *next;
 } LinkList;

 LinkList* initialList(LinkList *linkList){
     linkList = NULL;
     LinkList *p;
     int i = 0;
     srand(time(NULL));
     while(i < 10){
         p = (LinkList*)malloc(sizeof(LinkList));
         p ->data = rand() % 100;
         printf("%d  ", p ->data);
         p ->next = linkList;
         linkList = p;
         i ++;
     }
     printf("\n");
     return linkList;
 }
 LinkList* jiaoji(LinkList *La, LinkList *Lb){
    LinkList *p, *q, *t;
    LinkList *tmpLinkList = NULL;
    //Lc = NULL;
    for(p = La; p != NULL; p = p ->next){
        for(q = Lb; q != NULL; q = q ->next){
            if(p ->data == q ->data){
                t = (LinkList*)malloc(sizeof(LinkList));
                t ->data = q ->data;
                t ->next = tmpLinkList;
                tmpLinkList = t;
                break;
            }
        }
    }
    return tmpLinkList;
 }
 int main(){
    LinkList *La, *Lb, *Lc;
    La = initialList(La);
    Lb = initialList(Lb);
    Lc = jiaoji(La, Lb);
    printf("intersection is: ");
    while(Lc){
        printf("%d  ", Lc ->data);
        Lc = Lc ->next;
    }
    return 0;
 }

相關推薦

連結串列實現集合

 #include<stdio.h> #include<stdlib.h> #include<time.h>  typedef struct node{      int data;      struct node *next;  } LinkList;  LinkLis

連結串列實現數字相加

兩個用連結串列表示的數字相加 https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two non-negative number

連結串列實現多項式的加法

最近遇到這樣一個題目,使用連結串列來實現兩個多項式的加法,剛開始覺得應該比較簡單,也可能是自己基礎不紮實吧,這其中也是踩了很多的坑啊,最終還是成功了,特此寫部落格記錄一下。 一、題目要求 使用連結串列來實現兩個多項式的加法,輸出最終相加後的多項

C語言:計算集合

#include<stdio.h> #include<stdlib.h> #include<time.h> #define NUMBER1 7 #define NUMBER2 5 void createCollect(int [],int

C語言實現連結串列

#include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; }LinkList; //建立連結串列 LinkLis

單鏈表——集合的差 A,B集合放到C連結串列

#include <stdio.h> #include <malloc.h> typedef struct Node { int data; struct Node *next; }LNode,*LinkList; void list

c語言連結串列實現集合的交集(1)

#include <stdio.h> #include <malloc.h> typedef struct node { int num; struct node *next; }AGG; AGG *CreateList() { /

連結串列單鏈表

問題描述 已知集合A和B的元素分別用不含頭結點的單鏈表儲存,函式difference()用於求解集合A與B的差集,並將結果儲存在集合A的單鏈表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成計算後A={10,20

連結串列實現一元多項式加減、導(Java)

Lnode.java package PloyItem; /** *@Author wzy *@Date 2017年11月12日 *@Version JDK 1.8 *@Description */ public class Lnode imp

棧的建立-----連結串列實現

設計: 1、建立Node節點類(儲存連結串列的前節點和本節點儲存的元素) 2、節點儲存的是泛型資料 3、建立一個棧的介面----定義如下函式: 4、介面實現類(棧頂元素指標和連結串列元素計數器) 程式碼實現: 介面類:StackADT  publi

Java連結串列實現

上一篇實現了佇列,這一篇我們實現棧。 棧是後入先出的資料結構。 連結串列中插入資料有頭插法和尾插法,本篇我們使用頭插法。 不多說直接上程式碼 連結串列的節點定義和上一篇使用的是同一個,可以參考上一篇。 public class StackImpl<T> { p

Java連結串列實現佇列

佇列--先入先出 棧---後入先出 連結串列實現佇列和棧。首先我們需要構建一個連結串列。連結串列有哪幾要素?   1、連結串列本身的value 2、連結串列的next指標,next指標指的還是同樣型別的值。 下邊看程式碼 public class Element&l

十三 連結串列實現

用連結串列實現棧:     連結串列棧: package com.lt.datastructure.stackqueue; /* * 使用連結串列實現棧 */ public class LinkedListStack<E> implements Stack

【演算法】C++連結串列實現一個箱子排序附原始碼詳解

01 箱子排序 1.1 什麼是分配排序? 分配排序的基本思想:排序過程無須比較關鍵字,而是通過"分配"和"收集"過程來實現排序.它們的時間複雜度可達到線性階:O(n)。 1.2 什麼是箱子排序? 箱子排序是分配排序的一種,箱子排序也稱桶排序(Bucket Sort),其基本思想是:設定若干個箱子,依次掃描待

c語言實現陣列中的內容進行交換。(陣列一樣大)

方法一:建立新的陣列。 #include<stdio.h> #include<stdlib.h> int main() { int arr1[5] = { 1, 2, 3, 4, 5, }; int arr2[5] = { 0, 6, 7, 8, 9, }

C語言利用順序表集合的差

Description A和B分別表示兩個集合,集合中的元素為整數,C=A和B的差集,計算並依次輸出C中的元素。 要求:用順序表儲存,另闢空間儲存C中元素 。 Input 輸入集合A的元素個數n(n>=0) 依次輸入A中的元素,以空格分隔。 輸入集合B的元素個數m(m>

LeetCode-21-連結串列-合併有序連結串列

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 方案一:歸併中的merge

資料結構:連結串列實現棧的括號匹配

完成以下程式,並在右邊空白處,對錯誤進行修改,並記錄下程式執行結果: 1. 編寫演算法,判斷一表達式中的括號是否配對,包括大、中、小三類括號。 連結串列版本: #include <cstdio> #include <cmath> #inclu

輸出倒數第k節點+反轉連結串列+合併有序連結串列

要求:遍歷連結串列一邊 #include <iostream> #include <cstring> using namespace std; struct node{ int val; node * next; }; node * fi

連結串列實現數相加

給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -