資料結構 線性表演算法

2021-09-29 14:29:55 字數 1883 閱讀 5074

1.線性表:線性表是n個具有相同特性的資料元素的有限序列。

線性表的主要儲存結構:

順序儲存結構——順序表

鏈式儲存結構——鍊錶

2.順序儲存:儲存空間連續,用一組連續的儲存單元依次存放資料元素;即邏輯上相鄰的元素,其物理位置也相鄰。

優點:隨機訪問

缺點:插入刪除結點困難;擴充套件不靈活

3.鏈式儲存:儲存空間不必連續;即邏輯上相鄰的元素,其物理位置可以任意,資料元素之間的邏輯關係借助指示元素儲存位置的指標來表示。

鍊錶的每個結點由兩部分組成:資料域data、指標域*next

|| 線性表演算法合集 ||

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef int elemtype;

struct seqlist

};typedef struct lnode

}*linklist;

void show(seqlist l)

}seqlist createseqlist(int *a,int n)

return h; //返回頭結點

}//刪除線性表中元素為x的值

void deletex(seqlist& l,elemtype x)

else }}

//去掉有序線性表中相同的元素

void deletesame(seqlist &l)

l->next = r; //最後乙個結點成為第乙個結點

}void reverse(linklist l)

}void reverse(seqlist l,int l,int h)

}void releftshift(seqlist l,int n)

int getlength(linklist l)

return len;

}void releftshift(linklist l,int n)

seqlist merge(seqlist l1,seqlist l2)

else

} if(p)

r->next = p;

else

r->next = q;

}//將所有元素偶數元素放到奇數之前

void preodd(seqlist l)

l.data[i] = tmp;

}void preodd2(seqlist l)

l.data[i] = tmp;

//show(l);

//printf("l=%d,h=%d,i=%d,a[i]=%d\n",l,h,i,l.data[i]);

if(i==k)

return l.data[k];//如果剛好是第k個

else if(kreturn kth(l,k,i+1,h);

//kth(l,k,l,i-1);

//kth(l,k,i+1,h);

}int main()

; seqlist l = createseqlist(a,10);

//show(l);

int k = kth(l,3,0,l.length-1);

printf("%d\n",k);

//show(l);

//linklist ll1 = seqlisttolinklist(l1);

//linklist ll2 = seqlisttolinklist(l2);

//show(l);

//merge(ll1,ll2);

//show(ll1);

system("pause");

return 0;

}

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...

資料結構 線性表

線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...