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...