線性表的順序儲存和鏈式儲存的實現 C

2021-06-16 17:47:19 字數 1622 閱讀 2852

//線性表的順序儲存

#include

typedef int datatype;

#define maxsize 15

//定義順序表

typedef struct

slist;

//初始化順序表

void listinit(slist * s)

//插入資料

int listinsert(slist *s ,int i,datatype x)

else

s->list[i]=x;

s->size++;

return 1;}}

//取得元素個數

int listlength(slist *s)

//刪除元素

int listdelete(slist *s,int i,datatype *x)

else

s->size--;

return 1;}}

//取得順序表中的元素

int listget(slist *s,int i,datatype *x)

else}

//主函式

int main ()

lnode;

//進行初始化

void listinit(lnode **head)

//插入資料

int listinsert(lnode *head,int i,datatype x)

if(j!=i-1)

q=(lnode*)malloc(sizeof(lnode));      //申請乙個節點

q->data=x;

q->next=p->next;

p->next=q;

return 1;

}//取得元素個數

int listlength(lnode *head)

return size;

}//刪除資料

int listdelete(lnode *head,int i,datatype *x)

if(j!=i-1)

q=p->next;

*x=p->data;

p->next=p->next->next;

free(q);

return 1;

}//取得元素

int listget(lnode* head,int i,datatype *x)

if(j!=i)

*x=p->data;

return 1;

}//銷毀資料鏈

void listdestroy(lnode **head)

*head=null;

}//主函式

void main ()

{lnode *mylist;

int i,x,s;

//初始化鍊錶

listinit(&mylist);

//插入資料

for(i=0;i<10;i++)

listinsert(mylist,i,i+1);

//取得資料個數

s= listlength(mylist);

printf("元素個數為:%d \n",s);

//取得所有資料

for(i=0;i

線性表的順序儲存和鏈式儲存

線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。採用順序儲存的有點是可以隨機訪問表中的元素,缺點是插入和刪除操作需要移動元素。在插入之前要移動元素以挪出空的儲存單元,然後再插入元素 刪除操作同樣需要移動元素,以填充被刪除的元素空...

線性表順序儲存和鏈式儲存

輸入第1行是乙個整數n,表示之後還有n行輸入。每行輸入表示對線性表的一條操作指令,格式是 指令編號 引數1 引數2 如有 指令編號為3,表示find操作,此時只有乙個引數,即待查元素的值。順序儲存 include using namespace std const int maxn 1e4 1 st...

線性表的順序儲存和鏈式儲存差異

線性表的順序儲存和鏈式儲存方式在存讀資料以及插入刪除資料時,時間複雜度不同。順序儲存的典型例子為陣列,鏈式儲存的典型例子為單鏈表。眾所周知,當讀取資料較為頻繁時,我們選擇順序儲存方式,當插入和刪除操作較為頻繁時,我們選擇鏈式儲存方式。接下來,我們將分析這樣做的原因 1.順序儲存 1 在讀取資料時,讀...