資料結構 = 結構定義 + 結構操作
#include
#include
#include
// 標註擴容操作的顏色巨集-----"\033[32m列印值\033[0m"
#define color(a, b) "\033[" #b "m" a "\033[0m"
#define green(a) color(a, 32)
(1)陣列指標, (2)容量, (3)長度
typedef
struct vector vec;
初始化與清空
// 返回值應指向當前陣列的首位址
vec *
init
(int n)
void
clear
(vec *v)
擴容
使用realloc
進行重擴建: 原址擴容 或 新值擴容, 且不一定開闢成功(返回null
且丟失原資料)
int
expand
(vec *v)
if(extr_size ==0)
return0;
printf
(green
("expand sucess "))
; v->data = p;
v->size +
= extr_size;
return1;
}
插入/刪除/顯示
int
insert
(vec *v,
int val,
int id)};
for(
int i = v->length; i > id;
--i)
v->data[id]
= val;
v->length +=1
;return1;
}int
erase
(vec *v,
int id)
v->length -=1
;return1;
}void
output
(vec* v)
printf
("}\n");
return
;}
int
main()
break
;case3:
break;}
output
(v);
}clear
(v);
# undef max_op
return0;
}
#include
#include
#include
typedef
struct listnode listnode;
typedef
struct list list;
初始化/清除
listnode*
getnode
(int val)
list*
getlist()
void
clearnode
(listnode* node)
void
clear
(list* l)
free
(l);
return
;}
插入/刪除/顯示
int
insert
(list* l,
int id,
int val)
interase
(list* l,
int id)
void
output
(list* l)
printf
("null\n");
return
;}
原地翻轉
void
reverse
(list* l)
l->head.next = pre;
return
;}
頭插入翻轉
int
searchid
(list* l,
int id)
return p->data;
}list*
reversehi
(list* l)
return lr;
}
int
main()
break
;case3:
break;}
output
(l);
}printf
("atoreverse:\n");
reverse
(l);
output
(l);
printf
("headinsertreverse:\n");
list* lr =
reversehi
(l);
output
(lr)
;clear
(lr)
;clear
(l);
#undef max_op
return0;
}
C語言 資料結構 順序表和煉表
一 線性表 線性表 linear list 是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式...
C語言資料結構 順序表
資料結構的一些講解,供學習者參考,也順帶作為複習 線性表的順序儲存是指在記憶體中用位址連續的一塊儲存空間順序存放線性表的各元素,用這種儲存形式儲存的線性表稱為順序表。因為記憶體中的位址空間是線性的,因此,用物理上的相鄰實現資料元素之間的邏輯相鄰關係既是簡單又自然的。將資料儲存區data和指標last...
資料結構 順序表(C語言)
seqlist.h include include define maxsize 100 typedef struct seqlisttype void seqlistinit seqlisttype sl 初始化順序表 int seqlistlength seqlisttype sl 返回順序表的...