線性表演算法實現
1.設有兩個無頭結點的單連結串列,頭指標分別為ha.hb.鏈中有資料域data鏈域next,兩連結串列的資料都按遞增序存放,現要求將hb表歸到ha表中且歸併後ha仍遞增序,歸併中ha表中已有的資料若hb中也有則hb中的資料不歸併到ha中要求不申請額外的儲存空間來完成。merge(hahb);
linklist.h
//
// Linklist.h
// Test
//
// Created by Edong on 2018/10/27.
// Copyright © 2018 Edong. All rights reserved.
//
#ifndef Linklist_h
#define Linklist_h
#include <stdlib.h>
#include <stdio.h>
#endif /* Linklist_h */
typedef int elemtype;
typedef struct node{
elemtype data;
struct node* next;
}*linklist;
// 傳入一個陣列,用於初始化連結串列
linklist initlist(int arg[]){
int lenth=0;
for (; arg[lenth]!='\0'; lenth++);
if (lenth==0) return NULL;
linklist list=(linklist)malloc(sizeof(linklist));
list->data=arg[0];
list->next=NULL;
for (int i=lenth; i>1; i--) {
linklist p=(linklist)malloc(sizeof(linklist));
p->data=arg[i-1];
p->next=list->next;
list->next=p;
}
return list;
}
void printList(linklist L){
linklist p=L;
while(p!=NULL){
printf("%d,",p->data);
p=p->next;
}
}
//合併排序
void sortList(linklist a,linklist b){
int flag=0;
linklist copyB=b;
linklist copyA=a;
linklist copyA2=a;
while(copyB){
if(copyA->next==NULL&&(copyB->data)>(copyA->data)){
copyA->next=copyB;
break;
}
if (copyB->data==copyA->data) {
copyB=copyB->next;
continue;
}
if (copyB->data<copyA->data) {
if (flag==0) copyA=copyA->next;
copyA2->next=copyB;
copyB=copyB->next;
copyA2->next->next=copyA;
if (flag==0){
elemtype data=copyA2->data;
copyA2->data=copyA2->next->data;
copyA2->next->data=data;
flag=2;
copyA=copyA2->next;
continue;
}
copyA2=copyA2->next;
continue;
}
if(copyB->data>copyA->data){
copyA=copyA->next;
if (flag!=0)copyA2=copyA2->next;
else flag=1;
}
}
}
main.c
#include <stdio.h>
#include "Linklist.h"
#define MAXSIZE 30
int main(int argc, const char * argv[]) {
int a[MAXSIZE]={1,3,5,7};
int b[MAXSIZE]={2,4,6,8,10} ;
linklist al=initlist(a);
linklist bl=initlist(b);
printf("\n連結串列a為:");
printList(al);
printf("\n連結串列b為:");
printList(bl);
printf("\n連結串列b、a合併後:");
sortList(al, bl);
printList(al);
printf("\n");
return 0;
}
相關文章
- 線性表演算法設計題1演算法
- 線性表及其演算法(java實現)演算法Java
- 資料結構和演算法(一)線性表實現資料結構演算法
- 線性表及其實現
- pytorch實現線性迴歸PyTorch
- TensorFlow實現線性迴歸
- 使用lap.lapjv實現線性分配(我主要用來作為匈牙利演算法的實現)演算法
- 線性表1.0(陣列實現)陣列
- 【數值計算方法】線性方程組迭代演算法的Python實現演算法Python
- 線性規劃之單純形演算法矩陣描述與python實現演算法矩陣Python
- 數學推導+Python實現機器學習演算法:線性迴歸Python機器學習演算法
- Pytorch 實現簡單線性迴歸PyTorch
- 線性迴歸 go 語言實現Go
- 線性表的使用——順序實現
- 機器學習演算法(一):1. numpy從零實現線性迴歸機器學習演算法
- 線性迴歸演算法演算法
- 【pytorch_5】線性迴歸的實現PyTorch
- go語言使用切片實現線性表Go
- QLab Pro for Mac(現場表演類實時音影片編輯工具)Mac
- 圖的鄰接表演算法---(附完整程式碼)演算法
- 【深度學習 01】線性迴歸+PyTorch實現深度學習PyTorch
- 線性表-順序表C語言實現C語言
- 線性迴歸:最小二乘法實現
- 【機器學習】線性迴歸python實現機器學習Python
- 【機器學習】線性迴歸sklearn實現機器學習
- 一致性雜湊演算法 PHP 實現演算法PHP
- 手動實現一致性 Hash 演算法演算法
- 梯度下降法實現最簡單線性迴歸問題python實現梯度Python
- 簡明線性迴歸演算法演算法
- Java實現資料結構之線性結構Java資料結構
- 萬字教你如何用 Python 實現線性規劃Python
- 資料結構:線性表(Python實現基本操作)資料結構Python
- python實現線性迴歸之簡單迴歸Python
- etcd學習(7)-etcd中的線性一致性實現
- 自己實現一個一致性 Hash 演算法演算法
- 一致性hash演算法原理及go實現演算法Go
- css3實現文字線性漸變,css3實現背景漸變CSSS3
- 機器學習演算法(6)用Python實現用核支援向量機求解非線性問題機器學習演算法Python