設有一元素為整數的線性表La1,a2,a3an

2021-03-04 01:17:01 字數 6114 閱讀 4990

1樓:匿名使用者

上面是核心**和乙個隨手寫的簡單測試,注意看數字15,左邊都比15小,右邊都比15大。

你的這個題目其實就是快速排序演算法的一部分,有興趣可以去看看快排的原理,我這個函式就是從之前寫的快排拿出來小改了一下的。

下面是完整的測試函式,隨手寫的,可能不太優雅:

#include

using namespace std;

void halfsort(int* v, int low, int high, int k)

while (v[i] <= v[mid] && j != i)

if (j != i)  else }}

int main(void)

int k = 30;

printf("k = %d, arr[k] = %d\n", k, arr[k]);

halfsort(arr, 0, 44, k);

for (int i = 0; i < 45; ++i)

return 0;}

設有一元素為整數的線性表l=(a1,a2,a3,?,an),存放在一維陣列a[n]中,設計乙個演算法

2樓:匿名使用者

#include

#include

#include

#define n 20

int main()

printf("\n源表\n");

for(i=0;is[n-1])

{while(1)

{if(s[right_i]\n");

for(i=0;i

已知線性表l=(a1,a2,...,an)存放在一維陣列a[0..n-1]中,將線性表l就地逆置為l=(an,...,a2,a1),試寫出演算法.

3樓:匿名使用者

演算法比**還麻煩

step1:設一首指標一尾指標

setp2:交換收尾指標值

step3:首指標向後移一位,尾向前移一位 若首》=尾 退出 否則轉step2

for(i=0,j=n-1;i

4樓:沒節操的小秋

我的回答希望可以幫助到你.

對於線性表l=(a1,a2,a3,…ai,…,an),下列說法中正確的是( )。 (1分) a

5樓:一念生

a錯誤,第乙個元素再往前就沒有了其他元素了,所以沒有直接前驅;最後乙個元素再往後就沒有其他元素了,所以沒有直接後繼。

b錯誤,建立線性表時如果不申請節點記憶體,那這條連結串列上就乙個元素都沒有;

c錯誤,連結串列中元素可以是1-2-3-4-5,也可以是5-4-6-2-3,沒有元素排序的限制

有乙個線性表(a1,a2,...,an),其中n>=2,採用帶頭結點的單鏈表儲存,頭指標為l,每個結點存放線性表中

6樓:水裡風

(1)線性表中的元素無序

pnode *p=l;

while(p!=null)

if(p->data==x)return p;

else p=p->next;

return null;

(2)線性表中的元素按遞增有序

pnode *p=l;

while(p!=null)

if(p->data==x)return p;

else if(p->data>x)return null;

else p=p->next;

return null;

(3)線性表中的元素按遞減有序

pnode *p=l;

while(p!=null)

if(p->data==x)return p;

else if(p->datanext;

return null;

線性表l=(a1, a2, ..., an)用陣列表示,假定刪除表中任一元素的概率相同,則刪除乙個元素平均需要移動元素 5

7樓:匿名使用者

線性表l=(a1, a2, ..., an)用陣列表示,假定刪除表中任一元素的概率相同,則刪除一

回個元素平均需要移答動元素的_(n-1)/2__

線性表l=(a1, a2, ..., an)用陣列表示,假定刪除表中任一元素的概率相同,則插入乙個元素平均需要移動元素的_n/2__

8樓:匿名使用者

((n-1)+(n-2)+....+1+0)/n=(n-1)/2

有乙個線性表(a1,a2,...,an),採用帶頭結點的單鏈表l儲存.設計一演算法將其就地逆置.............急急急

9樓:匿名使用者

#include "stdio.h"

#include "string.h"

#include "ctype.h"

#include "stdlib.h"

#include "io.h"

#include "math.h"

#include "time.h"

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 20 /* 儲存空間初始分配量 */

typedef int status;/* status是函式的型別,其值是函式結果狀態**,如ok等 */typedef int elemtype;/* elemtype型別根據實際情況而定,這裡假設為int */

status visit(elemtype c)

typedef struct node

node;

typedef struct node *linklist; /* 定義linklist */

/* 初始化順序線性表 */

status initlist(linklist *l)

/* 初始條件:順序線性表l已存在。操作結果:若l為空表,則返回true,否則返回false */

status listempty(linklist l)

/* 初始條件:順序線性表l已存在。操作結果:將l重置為空表 */

status clearlist(linklist *l)

(*l)->next=null; /* 頭結點指標域為空 */

return ok;

}/* 初始條件:順序線性表l已存在。操作結果:返回l中資料元素個數 */

int listlength(linklist l)

return i;

}/* 初始條件:順序線性表l已存在,1≤i≤listlength(l) */

/* 操作結果:用e返回l中第i個資料元素的值 */

status getelem(linklist l,int i,elemtype *e)

if ( !p || j>i )

return error; /* 第i個元素不存在 */

*e = p->data; /* 取第i個元素的資料 */

return ok;

}/* 初始條件:順序線性表l已存在 */

/* 操作結果:返回l中第1個與e滿足關係的資料元素的位序。 */

/* 若這樣的資料元素不存在,則返回值為0 */

int locateelem(linklist l,elemtype e)

return 0;}

/* 初始條件:順序線性表l已存在,1≤i≤listlength(l), */

/* 操作結果:在l中第i個位置之前插入新的資料元素e,l的長度加1 */

status listinsert(linklist *l,int i,elemtype e)

if (!p || j > i)

return error; /* 第i個元素不存在 */

s = (linklist)malloc(sizeof(node)); /* 生成新結點(c語言標準函式) */

s->data = e;

s->next = p->next; /* 將p的後繼結點賦值給s的後繼 */

p->next = s; /* 將s賦值給p的後繼 */

return ok;

}/* 初始條件:順序線性表l已存在,1≤i≤listlength(l) */

/* 操作結果:刪除l的第i個資料元素,並用e返回其值,l的長度減1 */

status listdelete(linklist *l,int i,elemtype *e)

if (!(p->next) || j > i)

return error; /* 第i個元素不存在 */

q = p->next;

p->next = q->next; /* 將q的後繼賦值給p的後繼 */

*e = q->data; /* 將q結點中的資料給e */

free(q); /* 讓系統**此結點,釋放記憶體 */

return ok;

}/* 初始條件:順序線性表l已存在 */

/* 操作結果:依次對l的每個資料元素輸出 */

status listtraverse(linklist l)

printf("\n");

return ok;

}/* 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(頭插法) */

void createlisthead(linklist *l, int n)

}/* 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(尾插法) */

void createlisttail(linklist *l, int n)

r->next = null; /* 表示當前連結串列結束 */

}int main()

k=listlength(l); /* k為表長 */

for(j=k+1;j>=k;j--)

printf("依次輸出l的元素:");

listtraverse(l);

j=5;

listdelete(&l,j,&e); /* 刪除第5個資料 */

printf("刪除第%d個的元素值為:%d\n",j,e);

printf("依次輸出l的元素:"); listtraverse(l);

i=clearlist(&l);

printf("\n清空l後

createlisthead(&l,20);

printf("整體建立l的元素(頭插法):");

listtraverse(l);

i=clearlist(&l);

printf("\n刪除l後

createlisttail(&l,20);

printf("整體建立l的元素(尾插法):");

listtraverse(l);

return 0;}

10樓:等你愛你惜你

#include

#include

typedef int elemtype;

typedef struct node

lnode,* linklist;

linklist initlist(linklist l);//申請節點空間

linklist input(linklist l);//用於輸入資料

void prinlink(linklist l);//輸出資料void reverse(linklist l);//逆置連結串列main()

linklist initlist(linklist l)//申請節點空間

linklist input(linklist l)//輸入資料return l;//返回連結串列

}void prinlink(linklist l)//列印連結串列}void reverse(linklist l)//逆置連結串列}

若二維陣列a有m列,則計算任一元素a在陣列中位置

d。二維陣列中的元素是通過使用下標 即陣列的行索引和列索引 來訪問的。例如 a 2 3 將獲取陣列中第 3 行第 4 個元素。a i j 將獲取陣列中第 i 1 行第 j 1個元素,即陣列中第i m j 1個數。你隨便拿兩個數試試不就知道答案了,比如a 0 0 a 0 1 答案明顯是d啊,考試做題也...

一部日本的特攝片是要同一元素變身的人能召喚出機械人

我想你說的可能是 bai超星神系列du 特攝裡的第一部 zhi超星神格蘭賽dao 裡搜尋 超星神權 就能看到介紹了。一共是十二個星座對應的十二戰士,分為火系 水系 土系 風系,每個系各三個戰士,各能召喚出乙個機械人。超新神格蘭賽沙!小時候看過的乙個日本特攝片 就是說有好多人可以變身還可以召喚機械人 ...

一元二次方程整數解問題

解 顯然a 1符合題意,當a 1時,關於x的方程 a 1 x方 2x a 1 0是一元二次方程 其判別式 4 4 a 1 a 1 4a 2 0,方程 a 1 x方 2x a 1 0總有實根,設兩實根為x1 x2,則 x1 x2 2 1 a 當x1 x2都是整數時,1 a是2的非零約數,所以1 a的值...