bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

有序表歸并函數C語言,兩個有序單鏈表的合并c語言

數據結構:順序表的合并(C語言)

#include?stdio.h

創新互聯建站是專業的樊城網站建設公司,樊城接單;提供網站設計、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行樊城網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

#include?malloc.h

#include?stdlib.h

#define?LIST_INIT_SIZE?10?//?線性表存儲空間的初始分配量

#define?LISTINCREMENT?2?//?線性表存儲空間的分配增量

struct?SqList

{

int?*elem;?//?存儲空間基址

int?length;?//?當前長度

int?listsize;?//?當前分配的存儲容量(以sizeof(int)為單位)

};

void?InitList(SqList?L)

{?//?操作結果:構造一個空的順序線性表

L.elem?=?(int?*)malloc(LIST_INIT_SIZE*sizeof(int));

if?(!L.elem)

exit(0);?//?存儲分配失敗

L.length?=?0;?//?空表長度為0

L.listsize?=?LIST_INIT_SIZE;?//?初始存儲容量

}

int?ListInsert(SqList?L,?int?i,?int?e)

{?//?初始條件:順序線性表L已存在,1≤i≤ListLength(L)+1

//?操作結果:在L中第i個位置之前插入新的數據元素e,L的長度加1

int?*newbase,?*q,?*p;

if?(i1?||?iL.length?+?1)?//?i值不合法

return?0;

if?(L.length?=?L.listsize)?//?當前存儲空間已滿,增加分配

{

if?(!(newbase?=?(int?*)realloc(L.elem,?(L.listsize?+?LISTINCREMENT)*sizeof(int))))

exit(0);?//?存儲分配失敗

L.elem?=?newbase;?//?新基址

L.listsize?+=?LISTINCREMENT;?//?增加存儲容量

}

q?=?L.elem?+?i?-?1;?//?q為插入位置

for?(p?=?L.elem?+?L.length?-?1;?p?=?q;?--p)?//?插入位置及之后的元素右移

*(p?+?1)?=?*p;

*q?=?e;?//?插入e

++L.length;?//?表長增1

return?1;

}

void?Print(SqList?L)

{

int?i;

for?(i?=?0;?iL.length;?i++)

printf("%d?",?*(L.elem?+?i));

printf("\n");

}

//?————————————————————————————————————

//?函數①

void?MergeList1(SqList?La,?SqList?Lb,?SqList?Lc)

{

int?*pa,?*pa_last,?*pb,?*pb_last,?*pc;

pa?=?La.elem;

pb?=?Lb.elem;

Lc.listsize?=?Lc.length?=?La.length?+?Lb.length;//不用InitList()創建空表Lc

pc?=?Lc.elem?=?(int?*)malloc(Lc.listsize*sizeof(int));

if?(!Lc.elem)?//?存儲分配失敗

exit(0);

pa_last?=?La.elem?+?La.length?-?1;

pb_last?=?Lb.elem?+?Lb.length?-?1;

while?(pa?=?pa_lastpb?=?pb_last)?//?表La和表Lb均非空

{?//?歸并

if?(*pa??*pb)

*pc++?=?*pa++;

else?if?(*pa??*pb)

*pc++?=?*pb++;

else{

*pc++?=?*pa++;

pb++;

Lc.length--;

}

}

while?(pa?=?pa_last)?//?表La非空且表Lb空

*pc++?=?*pa++;?//?插入La的剩余元素

while?(pb?=?pb_last)?//?表Lb非空且表La空

*pc++?=?*pb++;?//?插入Lb的剩余元素

}

//?————————————————————————————————————

//?函數②

void?MergeList2(SqList?La,?SqList?Lb,?SqList?Lc)

{

int?*pa,?*pa_last,?*pb,?*pb_last,?*pc;

pa?=?La.elem;

pb?=?Lb.elem;

Lc.listsize?=?Lc.length?=?La.length?+?Lb.length;//不用InitList()創建空表Lc

pc?=?Lc.elem?=?(int?*)malloc(Lc.listsize*sizeof(int));

if?(!Lc.elem)?//?存儲分配失敗

exit(0);

pa_last?=?La.elem?+?La.length?-?1;

pb_last?=?Lb.elem?+?Lb.length?-?1;

while?(pa?=?pa_lastpb?=?pb_last)?//?表La和表Lb均非空

{?//?歸并

if?(*pa?=?*pb)

*pc++?=?*pa++;

else

*pc++?=?*pb++;

}

while?(pa?=?pa_last)?//?表La非空且表Lb空

*pc++?=?*pa++;?//?插入La的剩余元素

while?(pb?=?pb_last)?//?表Lb非空且表La空

*pc++?=?*pb++;?//?插入Lb的剩余元素

Lb.length?=?Lc.length;

Lb?=?Lc;

}

//?————————————————————————————————————

//?函數③

void?Inverse(SqList?L){

int?i,?t;

for?(i?=?0;?i??L.length?/?2;?i++)

{

t?=?*(L.elem?+?i);

*(L.elem?+?i)?=?*(L.elem?+?L.length?-?i?-?1);

*(L.elem?+?L.length?-?i?-?1)?=?t;

}

}

void?main(){

SqList?LA,?LB,?LC;

int?a[4]?=?{?3,?5,?8,?11?},?b[7]?=?{?2,?6,?8,?9,?11,?15,?20?};

int?i;

InitList(LA);

InitList(LB);

InitList(LC);

for?(i?=?0;?i??4;?i++)

ListInsert(LA,?i?+?1,?a[i]);

for?(i?=?0;?i??7;?i++)

ListInsert(LB,?i?+?1,?b[i]);

printf("LA=");

Print(LA);

printf("LB=");

Print(LB);

printf("\n");

MergeList1(LA,?LB,?LC);

printf("①LC=");

Print(LC);

printf("\n");

MergeList2(LA,?LB,?LC);

printf("②LB=");

Print(LB);

printf("\n");

printf("③LC=");

Inverse(LC);

Print(LC);

}

C語言編寫一個程序實現兩個有序(從小到大)順序表合并成為一個順序表,合并后的結果放在第一個順序表中。

你提到的“奇怪錯誤”是由于你的exit宏和函數重名了,所以預處理器會把程序中的exit用-1代替,所以出錯。

另外,你的合并函數也是錯誤的,無法達到要求,整個程序修改如下:

//---------------------------------------------------------------------------

#include stdio.h

#include stdlib.h //注意這里,exit()函數要用到這個文件,這個文件已經包含了malloc()等函數的聲明

#define OK 1

#define LIST_INIT_SIZE 100

#define OVERFLOW 0

#define EXIT -2 //************注意這里

typedef int ElemType;

typedef int Status;

typedef struct {

ElemType *elem;

int length;

int listsize;

}SqList;

Status InitList_Sq(SqList *L)

{ L-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L-elem) exit(OVERFLOW);

L-length=0;

L-listsize=LIST_INIT_SIZE;

return OK;

}

void Create_Sq(SqList *L)

{ int i,n;

printf("創建一個有序表:\n");

printf("輸入有序表中元素的個數:");

scanf("%d",n);

L-length=n;

for(i=0;in;i++){

printf("輸入第%d個元素的值:",i+1);

scanf("%d",L-elem[i]);

printf("\n");

}

}

void Disp_Sq(SqList *L) //************注意這里

{ int i,n;

n=L-length;

for(i=0;in;i++)

printf("%5d",L-elem[i]);

printf("\n");

}

void Combine(SqList *la,SqList *lb) //************注意這里,此函數被重新編寫

{

ElemType *pa=la-elem,*pb=lb-elem ;

int i,j,k,len_a=la-length,len_b=lb-length;

if ((la-elem=malloc((len_a+len_b)*sizeof(ElemType)))==NULL) exit(OVERFLOW);

for (k=i=j=0; ilen_ajlen_b; ) {

if (pa[i]pb[j]) la-elem[k++]=pa[i++];

else la-elem[k++]=pb[j++];

}

while (ilen_a)

la-elem[k++]=pa[i++];

while (jlen_b)

la-elem[k++]=pb[j++];

la-length=k;

la-listsize=k;

free(pa);

}

void main()

{SqList L1,L2;

InitList_Sq(L1);

InitList_Sq(L2);

Create_Sq(L1);

Disp_Sq(L1);

printf("\n");

Create_Sq(L2);

Disp_Sq(L2); //************注意這里

printf("\n");

Combine(L1,L2);

Disp_Sq(L1); //************注意這里

}

//---------------------------------------------------------------------------

c語言編程,兩個有序表其元素為遞增有序,將此兩表歸并成一新的有序表并保持遞增

sqlist union(sqlist sa,sqlist sb)

{int sc[maxsize];

sa.length=length(sa);

sb.length=length(sb);

maxsize=sa.length+sb.length;

i=0;

while(isa.lengthisb.length)

{j=0;

if(sa[i]=sb[i]) {sc[j]=sa[i];j++}

i++;

}

while(isa.lengthisb.length)

{sc[j]=sa[i]?sa[i]:sb[i];i++;j++;}

}

解釋下面C語言程序(合并順序表,有順序表La,Lb)

因為順序表La、Lb都已經排好序了,那么要將他們合并成有序表放在Lc中,將La和Lb從他們的初始元素進行比較,誰小就將誰放入到Lc中,同時Lc和放入元素的順序表都指向下一個元素,然后繼續循環。最后肯定會有一個順序表先為空,那么就把不為空的順序表中的元素直接復制到表Lc中即可。

標題名稱:有序表歸并函數C語言,兩個有序單鏈表的合并c語言
分享鏈接:http://vcdvsql.cn/article18/hssigp.html

成都網站建設公司_創新互聯,為您提供品牌網站設計品牌網站制作電子商務外貿建站做網站外貿網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設