1. 規範的程式設計
標頭檔案 list.h
介面封裝 list.c
介面的測試 test.c
2. 誰申請誰釋放
申請完畢空間,一定要主動釋放。
3. 解題思路 :
畫圖;分析步驟;
偽**;
需要將偽**修改為真實可用的**
1、大小固定,訪問方便;
2、位址連續、儲存密度大;
3、刪除或者插入時,需要移動元素;
4、除第0個元素外,其它元素都有前驅;
除最後乙個元素外,其它元素都有後繼;
5、表滿不能插入,表空不能刪除
優點:
缺點:順序表操作
建立、銷毀、尾插、尾刪、查詢、更新、判空、判滿、遍歷
#ifndef _list_h_
#define _list_h_
//常量定義
enum e_result
;#define size 10
//型別定義
/*定義乙個資料型別來描述順序表*/
typedef
int datatype;
struct list
;typedef
struct list list;
//全域性變數申明
//函式宣告
//建立線性表
list *
createlist()
;//銷毀線性表
void
destroylist
( list * plist )
;//插入資料到線性表中
intinsertdatatolist
( list * plist,
int offset, datatype newdata )
;//輸出線性表中所有元素
void
showlist
( list * plist )
;//刪除線性表中某個元素
intdeletedatafromlist
( list * plist,
int offset, datatype pdata )
;int
searchdatafromlist
( list * plist, datatype searchdata )
;//修改線性表中的元素
intupdatedatatolist
( list * plist, datatype olddata, datatype newdata )
;#endif
//_list_h_
#include
#include
#include
#include
"list.h"
//建立順序表
list *
createlist()
//返回
return plist;
}//銷毀線性表
void
destroylist
( list * plist )
free
( plist )
; plist =
null;}
//插入資料到線性表中
intinsertdatatolist
( list * plist,
int offset, datatype newdata )
//移動元素
for( i = plist -> count -
1; i >= offset; i--
)//插入元素
plist -> data[offset]
= newdata;
//更新計數器
plist -> count++
;return ok;
}/*顯示輸出*/
void
showlist
( list * plist )
printf
("\r\n");
}/*刪除*/
intdeletedatafromlist
( list * plist,
int offset, datatype pdata )
plist -> count--
;return ok;
}/*查詢*/
intsearchdatafromlist
( list * plist, datatype searchdata )
if( t == plist -> count )
}printf
("查詢元素:%d\n"
,searchdata )
;return t;
}/*修改*/
intupdatedatatolist
( list * plist, datatype olddata, datatype newdata )
}printf
("表中沒有可修改元素\n");
return no;
}
#include
#include
#include
"list.h"
intmain()
system
("cls");
//插入元素
insertdatatolist
( plist,0,
3);insertdatatolist
( plist,0,
6);insertdatatolist
( plist,0,
9);insertdatatolist
( plist,0,
25);insertdatatolist
( plist,0,
15);insertdatatolist
(null,0
,8);
printf
("全部元素\n");
showlist
( plist )
;//顯示
/*刪除*/
deletedatafromlist
( plist,0,
0);printf
("刪除後元素\n");
showlist
( plist )
;//顯示
/*查詢*/
int t;
t =searchdatafromlist
( plist,6)
;if( t ==-1
)else
/*修改*/
int y;
y =updatedatatolist
( plist,25,
12);if
(y == ok )
//銷毀順序表
destroylist
( plist )
;return0;
}
gcc *c //執行本程式三個檔案 list.h list.c test.c
./a.out
C語言資料結構 順序表
資料結構的一些講解,供學習者參考,也順帶作為複習 線性表的順序儲存是指在記憶體中用位址連續的一塊儲存空間順序存放線性表的各元素,用這種儲存形式儲存的線性表稱為順序表。因為記憶體中的位址空間是線性的,因此,用物理上的相鄰實現資料元素之間的邏輯相鄰關係既是簡單又自然的。將資料儲存區data和指標last...
資料結構 順序表(C語言)
seqlist.h include include define maxsize 100 typedef struct seqlisttype void seqlistinit seqlisttype sl 初始化順序表 int seqlistlength seqlisttype sl 返回順序表的...
順序表 c語言資料結構
最近才學的資料結構,自己寫出來順序表求大神指點指點有沒有優化的地方 增 刪 改 查 github上有原始碼 github源 標頭檔案 pragma once include include typedef int sdatatype typedef struct seqlist seqlist 初始...