完成白天课上的代码,并编写makefile进行编译
#include <stdio.h>
#include <stdlib.h>
#include "./03_shunxu_tou.h"
Seqlist* cj_seqlist()//创建顺序表
{
Seqlist *list = (Seqlist*)malloc(sizeof(Seqlist));
if(NULL == list)
{
return NULL;
}
list->pos = 0;
return list;
}
void cr_seqlist(Seqlist* list ,datatype num)//尾行插入数据
{
if(list->pos >=N)
{
printf("顺序表满了,插入失败\n");
return;
}
list->data[list->pos] = num;
(list->pos)++;
printf("插入成功\n");
return;
}
void bl_seqlist(Seqlist* list )//遍历顺序表
{
int i;
for(i=0;i<(list->pos);i++)
{
printf("%d ",list->data[i]);
}
printf("\n");
return;
}
datatype sc_seqlist(Seqlist* list )//删除尾行数据并返回
{
datatype num;
if(list->pos <= 0)
{
printf("顺序表为空,删除失败\n");
return 0;
}
(list->pos)--;
num =list->data[list->pos];
printf("删除成功\n");
return num;
}
void xbcr_seqlist(Seqlist* list ,int n, datatype num)//下标插入数据
{
int i = list->pos;
if(i >=N)
{
printf("顺序表满了,插入失败\n");
return;
}
for(i= list->pos;i>n;i--)
{
list->data[i] = list->data[i-1] ;
}
list->data[n] = num;
(list->pos)++;
printf("插入成功\n");
if(n<0 ||n>list->pos)
{
printf("插入位置非法\n");
}
return;
}
datatype xbsc_seqlist(Seqlist* list,int n)//删除下标数据并返回
{
int i;
if(list->pos <= 0)
{
printf("顺序表为空,删除失败\n");
return 0;
}
datatype num = list->data[n];
for(i = n;i<(list->pos)-1;i++)
{
list->data[i] = list->data[i+1];
}
(list->pos)--;
printf("删除成功\n");
return num;
}
datatype xbcz_seqlist(Seqlist* list,int n)//按下标查找数据
{
for(int i = 0;i<list->pos;i++)
{
if(i==n)
{
return list->data[n];
}
}
return 0;
}
datatype xbxg_seqlist(Seqlist* list,int n,datatype num)//按下标修改数据
{
for(int i = 0;i<list->pos;i++)
{
if(i==n)
{
list->data[n] = num;
}
}
return num;
}
void sjxg_seqlist(Seqlist* list,datatype old,datatype newnum)//按数据修改数据
{
for(int i = 0;i<list->pos;i++)
{
if(list->data[i] == old)
{
list->data[i] = newnum;
}
}
return;
}
int sjcz_seqlist(Seqlist* list,datatype num)//按数据修改数据
{
for(int i = 0;i<list->pos;i++)
{
if(list->data[i] == num)
{
return i;
}
}
}
#include <stdio.h>
#include "./03_shunxu_tou.h"
int main(int argc, const char *argv[])
{
Seqlist *list = cj_seqlist();
cr_seqlist(list ,18);
cr_seqlist(list ,27);
cr_seqlist(list ,69);
cr_seqlist(list ,70);
bl_seqlist(list);
datatype n = sc_seqlist(list);
bl_seqlist(list);
printf("删除据的数据是%d\n",n);
xbcr_seqlist( list ,2, 59);
bl_seqlist(list);
datatype m = xbsc_seqlist( list ,2);
printf("删除据的数据是%d\n",m);
bl_seqlist(list);
datatype a = xbcz_seqlist(list,0);
printf("位置为0的数据是%d\n",a);
xbxg_seqlist(list,0,80);
bl_seqlist(list);
sjxg_seqlist(list,80,96);
bl_seqlist(list);
int c = sjcz_seqlist(list,70);
printf("70位置在%d\n",c);
return 0;
}
#ifndef __sunxu_H__
#define N 4
typedef int datatype;
typedef struct
{
datatype data[N];
int pos;
}Seqlist;
Seqlist* cj_seqlist();
void cr_seqlist(Seqlist* list ,datatype num);
void bl_seqlist(Seqlist* list );
datatype sc_seqlist(Seqlist* list );
void xbcr_seqlist(Seqlist* list ,int n, datatype num);
datatype xbsc_seqlist(Seqlist* list ,int n);
datatype xbcz_seqlist(Seqlist* list,int n);
datatype xbxg_seqlist(Seqlist* list,int n,datatype num);
void sjxg_seqlist(Seqlist* list,datatype old,datatype newnum);
int sjcz_seqlist(Seqlist* list,datatype num);
#endif
-include ./makefile.cfg
$(Target):$(Obj)
$(CC) $^ -o $@
%.o:%.c
$(CC) $< $(CAN) $@
.PHONY:clean
clean:
rm $(Obj)
Target:=a.out
Obj:=01_shunxu.o 02_shunxu_main.o
CAN:=-c -o
CC:=gcc
顺序表去重
#include <stdio.h>
#include <stdlib.h>
#define N 16
typedef struct
{
int data[N];
int pos;
}Seqlist;
Seqlist* cj_seqlist()
{
Seqlist* list = (Seqlist*)malloc(sizeof(Seqlist));
if(NULL == list)
{
return NULL;
}
list->pos = 0;
}
void cr_seqlist(Seqlist* list,int num)
{
if(list->pos >= N)
{
printf("满了,插入失败\n");
return;
}
list->data[list->pos] = num;
(list->pos)++;
printf("插入成功\n");
return;
}
void bl_seqlist(Seqlist* list)
{
int i = 0;
for(i=0;i<list->pos;i++)
{
printf("%d ",list->data[i]);
}
putchar(10);
return;
}
void cscf_seqlist(Seqlist* list)
{
int i,j,k;
for(i=0;i<list->pos;i++)
{
for(j=i+1;j<list->pos;j++)
{
if(list->data[i]==list->data[j])
{
for(k=j;k<list->pos-1;k++)
{
list->data[k]=list->data[k+1];
}
list->pos--;
j--;
}
}
}
printf("删除完成\n");
return;
}
int main(int argc, const char *argv[])
{
Seqlist *list = cj_seqlist();
cr_seqlist( list,1);
cr_seqlist( list,1);
cr_seqlist( list,2);
cr_seqlist( list,2);
cr_seqlist( list,2);
cr_seqlist( list,3);
cr_seqlist( list,3);
cr_seqlist( list,5);
cr_seqlist( list,5);
cr_seqlist( list,5);
cr_seqlist( list,6);
bl_seqlist(list);
cscf_seqlist(list);
bl_seqlist(list);
return 0;
}