c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)
順序表的創(chuàng)建需要用到結(jié)構(gòu)體,構(gòu)造一個(gè)結(jié)構(gòu)體來(lái)存儲(chǔ)數(shù)據(jù),順序表申請(qǐng)的內(nèi)存是連續(xù)的。創(chuàng)建順序表的思路按照數(shù)據(jù)的“增刪改查來(lái)進(jìn)行編寫(xiě)”下列是順序表的創(chuàng)建代碼
創(chuàng)建頭文件:
sqlist.h
#ifndef SQLIST_H
#define SQLIST_H
#define N 100
#define ming 1119
#define shu 1120
typedef int T;
typedef struct sqlist{
T data[N];//定義一個(gè)整形數(shù)組來(lái)存儲(chǔ)數(shù)據(jù)
int size;//定義一個(gè)變量來(lái)記錄數(shù)據(jù)的個(gè)數(shù)
}sqlist,*sqlink;
sqlink create_sqlist();//1.創(chuàng)建順序表
sqlink insert_by_pos(sqlink sq,T dt,int index);//2.在任意位置插入
void traval(sqlink sq);//3.遍歷函數(shù)(也就是將順序表中的數(shù)據(jù)打印出來(lái)的函數(shù))
void destroy_sqlist(sqlink sq);//5銷(xiāo)毀鏈表
sqlink insert_by_tail(sqlink sq,T dt);//4.在尾部插入
T search_by_pos(sqlink sq,int index);//7.按位置查找
T search_by_value(sqlink sq,T dt);//8.按數(shù)值查找
void delete_by_pos(sqlink sq,int index);//9.按位置刪除
void delect_by_value(sqlink sq,T dt);//10.按數(shù)值刪除
sqlink change_by_pos(sqlink sq,T dt,int index);//11.按位置修改
sqlink change_by_value(sqlink sq,T dt1,T dt);//12.按數(shù)值修改,把相同的改了
#endif
下面的是功能函數(shù)
sqlist.c
#include#include “sqlist.h”
#include
//1.創(chuàng)建順序表
sqlink create_sqlist()
{
sqlink sq=(sqlink)malloc(sizeof(sqlist));//sq為結(jié)構(gòu)體類(lèi)型指針用來(lái)存結(jié)構(gòu)體結(jié)構(gòu)體
if(sq)//如果分配成功
{
sq->size=0; //初始化元素的個(gè)數(shù)為0
}
return sq;
}
//2.在任意位置插入(思路是將數(shù)組的元素往后移動(dòng),從后往前移動(dòng))
sqlink insert_by_pos(sqlink sq,T dt,int index)
{
int i=0;
if(sq)//判斷順序表是否存在,存在則進(jìn)行操作
{
if(index<0||index>sq->size)//非法插入位置,不插入
{
printf("index is out of the range\n");
}
else
{
for(i=sq->size;i>index;i--)
{
sq->data[i]=sq->data[i-1];
}
sq->data[index]=dt;
(sq->size)++;//插入一個(gè)數(shù)之后個(gè)數(shù)要加一
}
}
else//順序表不存在就會(huì)打印sq為空
{
printf("sq is null\n");
}
return sq;
}
//3.遍歷函數(shù)(將結(jié)構(gòu)體里面的數(shù)組存儲(chǔ)的數(shù)據(jù)打印出來(lái))
void traval(sqlink sq)
{
int i=0;
if(sq)
{
for(i=0;isize;i++)
printf("%d “,sq->data[i]);
}
else
{
printf(“sq is null\n”);
}
printf(”\n");
}
//4.在尾部插入
sqlink insert_by_tail(sqlink sq,T dt)
{
if(sq)
{
sq->data[(sq->size)++]=dt;
}
else
{
printf("sq is null\n");
}
return sq;
}
//5銷(xiāo)毀鏈表
void destroy_sqlist(sqlink sq)
{
if(sq)
{
free(sq);
}
}
//7.按位置查找(index是數(shù)組的下標(biāo),size則是個(gè)數(shù),所以index的范圍是0~size-1,index大于size-1和小于零的數(shù)是不存在的,也就是非法位置)
T search_by_pos(sqlink sq,int index)
{
if(sq)
{
if(index<0||index>sq->size-1)
{
printf(“index is out of the range\n”);
return -ming;
}
else{
return sq->data[index];
}
}
else
{
printf("sq is null\n");
return -shu;
}
}
//8.按數(shù)值查找(將相同的數(shù)據(jù)找出來(lái))
T search_by_value(sqlink sq,T dt)
{
int i=0;
if(sq)
{
for(i=0;isize;i++)
{
while(sq->data[i]==dt)
{
printf(“i=%d “,i);
break;
}
}
printf(”\n”);
}
else
{
printf("sq is null\n");
return -shu;
}
return ming;
}
//9.按位置刪除
void delete_by_pos(sqlink sq,int index)
{
int i=0;
if(sq)
{
for(i=index;isize;i++)
{
sq->data[i]=sq->data[i+1];
}
(sq->size)–;//刪除之后個(gè)數(shù)要減去1
}
else
{
printf("sq is null\n");
}
}
//10.按數(shù)值刪除(刪除所有與要?jiǎng)h除數(shù)字相同的數(shù)字)
void delect_by_value(sqlink sq,T dt)
{
int i=0;
if(sq)
{
for(i=0;isize;i++)
{
while(sq->data[i]==dt)
{
printf("i=%d ",i);
delete_by_pos(sq,i);//查找到數(shù)據(jù)之后把位置記錄下來(lái),按位置進(jìn)行
break;
}
}
}
else
{
printf(“sq is null\n”);
}
}
//11.按位置修改
sqlink change_by_pos(sqlink sq,T dt,int index)
{
if(sq)
{
if(index<0||index>sq->size-1)
{
printf(“index is out of range\n”);
}
else
{
sq->data[index]=dt;
}
}
else
{
printf("sq is null\n");
}
return sq;
}
//12.按數(shù)值修改,把相同的改了
sqlink change_by_value(sqlink sq,T dt1,T dt)
{
int i=0;
if(sq)
{
for(i=0;isize;i++)
{
while(sq->data[i]==dt)
{
sq->data[i]=dt1;
break;
}
}
}
else
{
printf("sq is null\n");
}
}
主函數(shù)
main.c
#include#include “sqlist.h”
int main()
{
sqlink sq =create_sqlist();
insert_by_pos(sq,1,0);
insert_by_pos(sq,2,0);
insert_by_pos(sq,3,0);
insert_by_pos(sq,4,0);
insert_by_tail(sq,2);
insert_by_tail(sq,3);
insert_by_tail(sq,4);
traval(sq);
//printf("data=%d",search_by_pos(sq,2));
//search_by_value(sq,4);
//delete_by_pos(sq,0);
//delect_by_value(sq,4);
//printf("\n");
//change_by_pos(sq,520,2);
change_by_value(sq,520,4);//把所有的4改成520
traval(sq);
destroy_sqlist(sq);
return 0;
}
主函數(shù)這里只是調(diào)用了一些函數(shù)的功能而已,下面給大家附上圖片
前面的1,2,3,4是用了頭插()的方式,所以順序是反的,后面的2,3,4是尾插法。
總結(jié)
以上是生活随笔為你收集整理的c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 智慧气象机器_智慧电缆隧道火热建设中 传
- 下一篇: CTF-sql注入