8580 合併鍊錶
時間限制:1000ms **長度限制:10kb
提交次數:3724 通過次數:2077
題型: 程式設計題 語言: g++;gcc
description
線性鍊錶的基本操作如下:
#include
#include
#define error 0
#define ok 1
#define elemtype int
typedef int status;
typedef struct lnode
lnode,*linklist;
status listinsert_l(linklist &l, int i, elemtype e)
if (!p || j > i-1) return error; // i小於1或者大於表長
s = (linklist)malloc(sizeof(lnode)); // 生成新結點
s->data = e; s->next = p->next; // 插入l中
p->next = s;
return ok;
} // linstinsert_l
status listdelete_l(linklist &l, int i, elemtype &e)
if (!(p->next) || j > i-1) return error; // 刪除位置不合理
q = p->next;
p->next = q->next; // 刪除並釋放結點
e = q->data;
free(q);
return ok;
} // listdelete_l
設計乙個演算法將兩個非遞減有序鍊錶a和b合併成乙個新的非遞減有序鍊錶c。
輸入格式
第一行:單鏈表a的元素個數
第二行:單鏈表a的各元素(非遞減),用空格分開
第三行:單鏈表b的元素個數
第四行:單鏈表b的各元素(非遞減),用空格分開
輸出格式
第一行:單鏈表a的元素列表
第二行:單鏈表b的元素列表
第三行:合併後單鏈表c的元素列表
輸入樣例
612 24 45 62 84 96
415 31 75 86
輸出樣例
list a:12 24 45 62 84 96
list b:15 31 75 86
list c:12 15 24 31 45 62 75 84 86 96
#include
#include
#define error 0
#define ok 1
#define elemtype int
using
namespace std;
typedef
int status;
typedef
struct lnode
lnode,
*linklist;
intloadlink_la
(linklist &l)
}printf
("\n");
return ok;
}int
loadlink_lb
(linklist &l)
}printf
("\n");
return ok;
}int
createlink_l
(linklist &l,
int n)
return ok;
}int
main()
else
}while
(!p&&q)
while
(p)}
SCAU 18925 試卷排序(雙向鍊錶)
18925 試卷排序 雙向鍊錶 description 老師要將n張試卷重新排序,每張試卷都有編號為1 n,採取如下的方法 先將編號1的試卷放進佇列,剩下從第2張到第n張依次放入佇列,放入的時候老師會把編號i的試卷插入到編號為x試卷之前或之後 x輸入格式 第1行為乙個正整數n,表示了有n張試卷。第2...
SCAU 8581 線性鍊錶逆置
description 線性鍊錶的基本操作如下 include include define error 0 define ok 1 define elemtype int typedef int status typedef struct lnode lnode,linklist status l...
SCAU 資料結構練習 8577 合併順序表
題目本身沒有難度,都是固定的模板套用,理解了,就會了。順序表的基本操作 如下 include include define ok 1 define error 0 define list init size 100 define listincrement 10 define elemtype in...