c語言連結串列實現兩集合的交集(1)
#include <stdio.h> #include <malloc.h> typedef struct node { int num; struct node *next; }AGG; AGG *CreateList() { // 建立單迴圈連結串列,返回連結串列頭 AGG *head,*p; int i,n; printf("結點個數n = "); scanf("%d",&n); head = p = (AGG *)malloc(sizeof(AGG)); // 專用頭結點 head->num = 0; printf("輸入 %d 整數(空格隔開):\n",n); for(i = 0; i < n; ++i) { p->next = (AGG *)malloc(sizeof(AGG)); scanf("%d",&p->next->num); p = p->next; } p->next = head; return head; } AGG *MutualAgg(AGG *A,AGG *B) { // A∩B AGG *C,*pa,*pb,*pc,*qc; C = pc = (AGG *)malloc(sizeof(AGG)); pc->num = 0; pa = A->next; pb = B; while(pa != A) { pb = B->next; while(pb != B) { if(pb->num == pa->num) { qc = (AGG *)malloc(sizeof(AGG)); qc->num = pb->num; pc->next = qc; pc = qc; } pb = pb->next; } pa = pa->next; } pc->next = C; return C; } void PrintList(AGG *head) { AGG *p = head->next; short counter = 0; while(p != head) { if(counter && counter%10 == 0) printf("\n"); printf("%5d",p->num); counter++; p = p->next; } if(counter % 10) printf("\n"); } void freeheap(AGG *head) { AGG *p,*q; p = head; q = p->next; while(q != head) { p = q; q = p->next; free(p); } free(head); } int main() { AGG *A,*B,*C,*D,*E; printf("建立集合 A:\n"); A = CreateList(); printf("建立集合 B:\n"); B = CreateList(); printf("集合A的元素有:\n"); PrintList(A); printf("集合B的元素有:\n"); PrintList(B); C = MutualAgg(A,B); printf("交集 C = A∩B:\n"); PrintList(C); freeheap(A); freeheap(B); freeheap(C); printf("\n\n"); return 0; }
相關推薦
c語言連結串列實現兩集合的交集(1)
#include <stdio.h> #include <malloc.h> typedef struct node { int num; struct node *next; }AGG; AGG *CreateList() { /
使用C語言連結串列實現商品管理系統
#include <stdio.h> #include <stdlib.h> #include <windows.h> #define bool char #define true 1 #define false 0 #define NUM 1
C語言連結串列實現佇列操作
還是操作佇列,但是這次換成連結串列,但是要注意出隊的操作。 一般的思維是在出隊的時候,刪除頭結點的下一個節點,這樣的話確實可以將佇列中的節點全部刪除,但是如果我們將最後一個節點刪除的時候,我們的演算法就將tail指標賦值為NULL,這時如果再進行入隊操作的時候,就會發生段錯
資料結構——連結串列求兩集合的交集
#include <stdio.h> #include <malloc.h> typedef struct Node { int data; struct Node *next; }LNode,*LinkList; LNode *C
用連結串列實現兩個集合求並集
#include<stdio.h> #include<stdlib.h> #include<time.h> typedef struct node{ int data; struct node *next; } LinkList; LinkLis
C語言 連結串列的基本操作實現 原始碼
1 創作初衷 作為一個畢業半年,到公司上班的菜鳥程式猿,卻還沒有參與過一次實際的專案開發,沒有跟著專案寫過一行程式碼, 每天除了自學,就是做做文件之類的工作。所以在此,把之前學過的知識重新拿起來,寫成文章。 本文屬於作者 原創,轉載請註明出處!哦,也許並沒有人能看上
C語言:程式設計實現兩個矩陣
輸入一個3乘4矩陣✖️4乘5矩陣,輸出一個3乘5的矩陣 #include<stdio.h> int main() { int matrix1[3][4],matrix2[4][5],matrix3[3][5]; int i,j,k; int jz3[
C語言指針實現兩個數的互換
c語言指針 存儲 col clu stdio.h 實現 置換 形參與實參 兩個 #include <stdio.h> void change1(int a, int b)//形參與實參不是同一個變量{ int t; t = a; a = b; b = t; }
C語言連結串列(超詳細)
前言:之前學習連結串列的時候總會遇到一些問題 也看了好多人的文章感覺有些不是太實用 然後後來也是自己摸索才大概寫出來的. 在真正的開發中會把連結串列的增刪改查寫到函式裡 但是刪除有點麻煩 找了很多都是刪除第幾個 而不是刪除某個值對應的節點 讓我很難受 所以想寫一些連結串列的操作分享
5 種排序演算法--C語言連結串列
原始碼地址 GitHub:https://github.com/GYT0313/C-DataStructure/blob/master/sortIn5.c 包括: 氣泡排序 快速排序 選擇排序 插入排序 希爾排序 執行: 注意:
1870 Problem B C語言-連結串列排序
問題 B: C語言-連結串列排序 時間限制: 1 Sec 記憶體限制: 128 MB 提交: 86 解決: 71 [提交][狀態][討論版][命題人:外部匯入] 題目描述 已有a、b兩個連結串列,每個連結
C語言連結串列的建立插入等綜合實戰
系本人原創,轉載請註明出處: 程式設計老師讓寫一個連結串列的綜合運用,包括建立,檢視某個節點,刪除某個節點,插入某個節點,以及連結串列的逆序,還必須要有出錯提示和返回。QaQ,,,看見這麼多東西我就想嚶嚶嚶, 先放上鍊表的結構體: typedef struct stud
【演算法】C++用連結串列實現一個箱子排序附原始碼詳解
01 箱子排序 1.1 什麼是分配排序? 分配排序的基本思想:排序過程無須比較關鍵字,而是通過"分配"和"收集"過程來實現排序.它們的時間複雜度可達到線性階:O(n)。 1.2 什麼是箱子排序? 箱子排序是分配排序的一種,箱子排序也稱桶排序(Bucket Sort),其基本思想是:設定若干個箱子,依次掃描待
C語言連結串列節點插入與刪除
線性表操作 順序表是我們資料結構中的基本儲存形式,現在給定一個順序表,有如下操作: Insert X Y:在順序表中X位置插入Y元素,遍歷輸出當前順序表的所有元素。 Delete X:刪除順序表中的X元素,如果有多個X元素,只刪除第一個X,遍歷輸出當前順序的所有
C語言連結串列:遍歷,頭插,尾插,中間插入;頭節點刪除,尾節點刪除,中間刪除的操作
/****************************************************************************************************************************************
一步一步教你從零開始寫C語言連結串列---構建一個連結串列
為什麼要學習連結串列? 連結串列主要有以下幾大特性: 1、解決陣列無法儲存多種資料型別的問題。 2、解決陣列中,元素個數無法改變的限制(C99的變長陣列,C++也有變長陣列可以實現)。 3、陣列移動元素的過程中,要對元素進行大範圍的移動,很耗時間,效率也不高。
從零開始的c語言連結串列學習 001--建立一個最簡單基礎的連結串列
因為各種原因,儘管c語言期末考也拿了八十多分,卻仍然對連結串列處在完全甍逼的狀態,以至於之後的資料結構課聽天書,實驗課做不出來,於是決定重學一波連結串列的知識,特此記錄筆記 001—建立一個簡單的連結串列 1.1 認識連結串列 所謂連結串列,一言蔽之就是一連串帶
C語言連結串列多項式的加法
6-3 Add Two Polynomials (20 point(s)) Write a function to add two polynomials. Do not destroy the input. Use a linked list implementation
C語言連結串列的5種常見操作
C語言連結串列的5種常見操作 單鏈表反轉 連結串列中環的檢測 兩個有序的連結串列合併 刪除連結串列倒數第n個結點 求連結串列的中間結點 Ref typedef struct list{ int i
連結串列實現兩數相加
給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -