真正的c語言版本的有序順序表的合併

2021-09-26 23:32:35 字數 1270 閱讀 6596

這是我的第二篇部落格,資料結構中的鍊錶快要學習完了,今天的部落格是將兩個非遞減的有序順序表進行合併。

這個**是完全用c寫出來的,這個程式讓我想get到,結構體用malloc()函式分配的記憶體指標,並不是結構體成員中的陣列的初始位址,這一點很重要,我在學習資料結構的時候,老師用的分配記憶體的指標,但我測試以後發現,編譯器會報錯,於是我新建了乙個指向elemtype型別的指標,用以將結構體指標->陣列名(就是乙個位址)賦值給該指向elemtype型別的指標,這下終於成功了。

總體思路是依次比較兩個表中的元素,將較小的數給c表中,哪個表把值賦出去,哪個表就往後讀取,以下就是**實現:

#include#include#define maxsize 100

typedef struct extrior * sqlist; //sqlist 型別的指標

sqlist la,lb,lc; //malloc()分配指標

int i; //迴圈計數器

int main()

printf("\n") ;

a = la->arr;

la_last = a + la->length -1;

lb = (sqlist)malloc(sizeof(struct extrior));

printf("請輸入表b的長度:");

scanf("%d",&lb->length);

printf("\n");

printf("輸入表b的元素:") ;

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

printf("\n") ;

b = lb->arr;

lb_last = b + lb->length -1;

int * c;

lc = (sqlist)malloc(sizeof(struct extrior));

lc->length= la->length+lb->length;

c = lc->arr;

while(a<=la_last && b<=lb_last)

else

} while (a<=la_last)

while (b<=lb_last)

printf("合併後的列表為:");

順序表應用 純C語言版本

說明 今天整理了一下順序表的題目,一共是十道題,有一些題目用的是相同的演算法,但是也是能ac的,先獻上 後序再補上其他演算法的 include include int a 10010 void creat int n int moved int a,int n n j return n int ma...

順序表的基本操作 C語言版

標頭檔案apr 07.h define crt secure no warning 1 pragma once include define max size 10 typedef int datatype typedef struct seqlist seqlist,pseqlist typede...

順序表的基本操作 c語言版

1.初始化順序表 2.擴充套件順序表的儲存空間 3.列印順序表中的資料 4.向順序表中插入資料 5.刪除順序表中的元素,並將刪除的資料儲存在變數e中 include include define initsize 10 預設最大長度 typedef struct seqlist 初始化順序表 voi...