資料結構筆記03 線性表

2021-08-15 08:16:20 字數 3627 閱讀 1288

adt 線性表(list)

data

...operation

...endadt

線性表的順序儲存結構、鏈式儲存結構

a. 順序儲存結構原始碼:

#include

#include

#define maxsize 20

#define ok 1

#define error 0

#define true 1

#define false 0

typedef

int elemtype;

typedef

int status;

typedef

struct

sqlist;

status getelem(sqlist *l, int i) //獲得元素

e = l->data[i-1];

printf("該位置元素為:%d\n",e);

return ok;

}void initlist(sqlist *&l)

status listinsert (sqlist *l, int i, elemtype e) //第 i 個位置 前插

if(i<1 || i> l->length+1) //插入位置不合法

if(i<=l->length) //插入的不在表尾

}l->data[i-1] = e;

l->length++;

return ok;

}status listdelete(sqlist *l, int i)

if(i> l->length || i<1) //刪除位置不合法

e = l->data[i-1];

if(ilength) //元素取出後,後面的元素往前移覆蓋

} l->length--;

printf("刪除成功,被刪除的元素值為:%d\n",e);

return ok;

}int insertfunction(sqlist l)

else

}int checkfunction(sqlist *l)

void display(sqlist *l)

else

printf("\n");

}

}void deletefunction(sqlist *l)

int main()

puts("是否繼續操作? 1.是 0.退出");

scanf("%d",&goon);

} return

0;}

/* *

*

*

*/

b. 鏈式儲存結構原始碼:

#include

#include

#include

#define ok 1

#define error 0

#define

true

1#define

false

0typedef int elemtype;

typedef int status;

typedef struct node

node;

void createlinklist(node *ph);

int showlinklist(node *phead);

void insertlinklist(node *phead);

int deletelinklist(node *phead);

void showmainfun(node *phead);

void getelemlinklist(node *phead);

void checkelemlinklist(node *phead);

void createlinklist(node *ph)

puts("建立成功!");

printf("增加的結點數為:%d個\n",ph->

data);

}int showlinklist(node *phead)

else

printf("%d\t",point->

data);

point = point->next;

}printf("\n");

}return ok;

}void insertlinklist(node *phead)

else

if((pos > phead->

data) || (pos<

0)) //插入的位置不合法

else

//正常的在某個元素的前面插入

puts("請輸入結點值:");

scanf("%d",&pnew->

data);

pnew->next =

null;

pnew->next = point->next;

point->next = pnew;

(phead->

data)++;

puts("插入成功!");

// printf("此時鍊錶的長度為:%d\n",phead->data);

}puts("是否繼續插入? 1.是 0.否");

scanf("%d",&flag);

}}int deletelinklist(node *phead)

puts("請輸入刪除元素的位置:");

scanf("%d",&pos);

if(point->

data

==0) //鍊錶為空表的情況

else

if((pos ==

1)&&(phead->

data

==1)) //刪除情況為:此煉表除頭結點外只有乙個結點

else

//正常的刪除情況

if((point->next->next) ==

null) //在正常的刪除情況中:刪除的是鍊錶最後的乙個結點

else

//刪除的是鍊錶的中間結點

}}void getelemlinklist(node *phead)

else

else

printf("你查詢位置元素值為:%d\n",point->

data);}}

}void checkelemlinklist(node *phead)

else

if((point->next ==

null)&&(point->

data

!= value)) //沒有查詢到,&&兩邊條件不能互換位置,必須先判位址在判值!

point = point->next;} }

}void showmainfun(node *phead)

}}int main()

這個原始碼檔案有個缺陷的地方就是在刪除結點的時候沒有使用free()函式釋放開闢的記憶體空間!當時忘了,現在又懶了點,後面更新再改吧!

資料結構03 線性表

線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的基本特徵 抽象資料型別 線性表一般包括插入 刪除 查詢等基本操作。如下 public inte ce list 線性表的分類 線性表按物...

資料結構筆記 線性表

思考 怎麼程式設計解決多項式相加問題?1.線性表概念 由同型別資料元素構成的有序序列的線性結構 1.表中元素個數稱為線性表的長度 2.線性表中沒有元素時稱為空表 3.表的起始位置稱為表頭,結束位置稱為表尾。2.線性表的adt描述 3.線性表的順序儲存實現 未測試 include using name...

資料結構筆記 線性表

資料元素的資料型別。struct seqlist seqlist sl create int maxlen void sl free seqlist slist 釋放 刪除 順序表。與sqlst create 配對。void sl makeempty seqlist slist 置為空表。intsl...