又接著看了鏈式有序表的合併๑乛◡乛๑
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 ...