鏈式有序表的合併

2021-08-08 14:29:57 字數 1952 閱讀 7566

又接著看了鏈式有序表的合併๑乛◡乛๑

head.h標頭檔案——包含了 各種宣告還有結構體定義

#ifndef head_h_included

#define head_h_included

#define elemtype int

#define status int

typedef struct node

node,*pnode;

status initlist(pnode &h);    //初始化鍊錶

status getelem(pnode l,int i,elemtype e);    //取值

node *locateelem(pnode l,elemtype e);        //查詢

status listinsert(pnode l,int i,elemtype e); //插入

status listdelete(pnode l,int i);            //刪除

void output(pnode h);                        //列印

pnode creat_h(int n);                        //建立

pnode creat_r(int n);                        //建立

#endif // head_h_included

合併功能函式(單獨拿出來的啦๑乛◡乛๑)

void mergelist(pnode &a,pnode &b,pnode &c)

else

}pc->next=pa? pa:pb; //將非空表的剩餘段插入到pc所指結點之後

delete b;

}

main.c檔案

#include #include "head.h"

using namespace std;

void mergelist(pnode &a,pnode &b,pnode &c);

int main()

void mergelist(pnode &a,pnode &b,pnode &c)

else

}pc->next=pa? pa:pb;

delete b;

}status initlist(pnode &h) //初始化

status getelem(pnode l,int i,elemtype e) //取值

if(!p||j>i)

return -1;

e=p->data;

return 1;

}node *locateelem(pnode l,elemtype e) //查詢

status listinsert(pnode l,int i,elemtype e) //插入

if(!p||j>i-1) return -1;

pnode q=new node;

q->data=e;

q->next=p->next;

p->next=q;

return 1;

}status listdelete(pnode l,int i) //刪除

if(!p->next||j>i-1) return -1;

pnode q=p->next;

p->next=p->next->next;

delete q;

return 1;

}pnode creat_h(int n) //建立-頭插法

return l;

}pnode creat_r(int n) //建立-尾插法

return h;

}void output(pnode h) //列印鍊錶

}

合併有序鏈式線性表

leetcode的easy題之21merge two sorted lists要求合併兩個已經排好序的鏈式線性表。其實就是簡單的鍊錶操作。但是由於自己各種操作不熟悉,這道題捯飭了一天。首先就是這個控制台輸入兩組數,分別建立兩個線性表這裡卡了很久。另乙個點就是把鍊錶接起來,這裡操作也不是很熟悉。以下就...

有序線性表的有序合併

對於這個問題其實想法很簡單,已經已知線性表是有序的,那麼我們只需要比較值的大小放入另外乙個陣列中或者直接輸出 要考慮的是兩個輸入序列的邊界問題。這個問題在 中注釋,也是常用的迴圈兩個線性表的方法。已知線性表 la 和 lb 中的資料元素按值非遞減有序排列,現要求將 la 和 lb 歸併為乙個新的線性...

順序表的有序合併

題目描述 有兩個順序表la和lb,其元素均為非遞減有序排列,編寫演算法,將它們合併成乙個順序表lc,要求lc也是非遞減有序排列。例如,la 2,2,3 lb 1,3,3,4 則lc 1,2,2,3,3,3,4 輸入描述 分別輸入兩個順序表la和lb,以 1結束輸入 輸出描述 輸出歸併後的順序表lc ...