兩個有序鍊錶序列的合併

2021-08-02 22:18:14 字數 1894 閱讀 6867

習題2.5 兩個有序鍊錶序列的合併   (15分)

本題要求實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。

list merge( list l1, list l2 );
其中list結構定義如下:

typedef struct node *ptrtonode;

struct node ;

typedef ptrtonode list; /* 定義單鏈表型別 */

l1l2是給定的帶頭結點的單鏈表,其結點儲存的資料是遞增有序的;函式merge要將l1l2合併為乙個非遞減的整數序列。應直接使用原序列中的結點,返回歸併後的煉表頭指標。

#include #include typedef int elementtype;

typedef struct node *ptrtonode;

struct node ;

typedef ptrtonode list;

list read(); /* 細節在此不表 */

void print( list l ); /* 細節在此不表;空煉表將輸出null */

list merge( list l1, list l2 );

int main()

/* 你的**將被嵌在這裡 */

3

1 3 5

52 4 6 8 10

1 2 3 4 5 6 8 10 

null

null

#include #include #define n 20

typedef int elementtype;

typedef struct node *ptrtonode;

struct node ;

typedef ptrtonode list;

list read();

void print( list l );

list insert( list l, elementtype x );

list merge( list l1, list l2 );

list clearlist(list l);

list copylink(list src, list dst);

int main()

list read()

p->next=null;

return h;

}void print( list l )

printf("\n");

}list insert( list l, elementtype x )

} q->next=s;

s->next=p;

return h;

}list merge( list l1, list l2 )

} q1->next = s;

s->next = p1;

flag:

if(p2->next==null)

return h1;

p2=p2->next;

q1=h1;

p1=q1->next;

} return h1;

}list clearlist(list l)

l->next=null;

return l;

}list copylink(list s, list d)

q->next = null;

}return d;

}

合併兩個有序鍊錶序列

本題要求實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。list merge list l1,list l2 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型...

兩個有序鍊錶序列的合併

已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的並集新非降序鍊錶s3。輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用 表示序列的結尾 不屬於這個序列 數字用空格間隔。在一行中輸出合併後新的非降序鍊錶,數字間用空格分開,結尾不能有多餘空格 若新鍊錶為空,輸出null。1 3 ...

兩個有序鍊錶序列的合併

本題要求實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。list merge list l1,list l2 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型...