C語言,線性表 順序表 鍊錶

2021-08-14 23:50:02 字數 2911 閱讀 7272

c語言資料結構中兩個常見的線性表,用來儲存資料等;

一、建立順序表

定義  將線性表中的元素相繼存放在乙個連續的儲存空間中。         

可利用一維陣列描述儲存結構

特點   線性表的順序儲存方式

遍歷   順序訪問, 可以隨機訪問

順序表**:

#include

#define maxsize 100//定義陣列長度

#define ok 1

#define error 0//定義函式返回狀態值

typedef int status;

typedef struct sqlist

sqlist;//定義資料型別;

void initlist(sqlist *p)//初始化函式

status insertlist(sqlist *p)//插入函式

if (pos <= 0 || pos > maxsize)

//排除出錯情況

int i;

for (i = p->len-1; i >= pos-1 ; i--)

p->data[pos - 1] = e;//插入

p->len++;//不要忘記長度加一

return ok;

}status deletelist(sqlist *p)//刪除函式

if (pos < 1 || pos > maxsize)

//排除出錯情況;

e = p->data[pos-1];

printf("刪除的元素為%d\n",&e);

int i;

for (i = pos; i < p->len-1; ++i)

p->len--;//最後長度減一

return ok;

}status getlist(sqlist p)//獲取乙個元素

void print(sqlist p)//列印函式

//排除出錯情況

int i;

int j = 0;

for (i = 0; i < p.len-1; ++i)

}printf("\n");

}以上是順序表的各個功能函式;

主函式呼叫各個功能函式;

int main()

sqlist sq;//定義乙個順序表

int sel;

printf("歡迎使用順序表!\n");

initlist(&sq);//一定要初始化

while(1)

else

break;

}case 2:

else

printf("刪除失敗\n");

break;

}case 3:

else

printf("獲取失敗!\n");

break;

}case 4:

case 5:}}

}二、鍊錶

特點 每個元素(表項)由結點(node)構成。

每個結點由資料域和指標域組成

定義:typedef int elemtype;    //資料元素的型別

typedef struct node

node;                            //定義結點

typedef node *linklist;  //定義鍊錶

**:#include

#include

#define ok 1

#define error 0

typedef int status;

typedef struct node

node;//定義結點

typedef node* linklist;

linklist h;//全域性變數 定義頭指標;

status initlink()//初始化函式

h = p;

h->data = 0;//用以記錄頭結點後插入多少個結點;

h->next == null;

return ok;

}status insertlink()//插入函式,本函式是固定插入位子,在頭結點後插入

p->data = e;//寫入資料

p->next = h->next;

h->next = p;//鎖定在頭結點後插入,不用遍歷到最後在插入,便於操作;

h->data++;

return ok;

}status deletelink()//刪除函式

while(p->next != null)

}printf("第%d個結點資訊為%d\n",pos,e);

printf("是否刪除y/n\n");

char ch;

scanf("%c",&ch);

if (getchar() == 'y')//確認是否刪除,安全

else if (getchar() == 'n')

}status getlink()//讀取函式

if (pos < 1 || pos > (h->data) )

while(p->next != null)//移動指標到要讀取的結點

}printf("第%d個結點資訊為%d\n",pos,e);

return ok;

}void print()//列印函式

while(p->next != null)

printf("\n");

return;

}主函式

int main()

else

printf("插入失敗!\n");

break;

}case 2:

else

printf("刪除失敗!\n");

break;

}case 3:

case 4:

case 0:}}

}

線性表(順序表 鍊錶)

在程式中,經常需要將一組 通常是同為某個型別的 資料元素作為整體管理和使用,需要建立這種元素組,用變數記錄他們傳進傳出函式等。一組資料中包含的元素個數可能發生變化。對於這種需求,最簡單的解決方案就是將這樣一組元素看成乙個序列,用元素在序列裡的位置和順序,表示實際應用中的某種有意義的資訊,或者表示資料...

合併鍊錶 線性表 C語言

今天寫寫鍊錶,新學的,啊 這。有點難。題目要求 線性表 假設有兩個按元素值遞增次序排列的線性表,均以單鏈表形式儲存。請編寫演算法將這兩個單鏈表歸併為乙個按元素值遞減次序排列的單鏈表,並要求利用原來兩個單鏈表的結點存放歸併後的單鏈表。先上 include include typedef struct ...

線性表之順序表和煉表

標籤 單鏈表 順序表優缺點 時間複雜度 線性表 2016 03 23 23 43 5200人閱讀收藏 舉報 c c 44 作者同類文章x 這裡比較的是是基於c語言實現的順序表與單鏈表,與其他語言的實現可能會有差異,但我相信語言是相通的,它們的實現機制應該也差不多。1 what 什麼是順序表和單鏈表 ...