#include "seq.h"
int main(void){
pseq_t pt = Init_Seq();
if(pt == NULL){
printf("pt malloc failure %s\n",__FUNCTION__);
exit(1);
}
Add_Data(pt,30,1);
display(pt);
Add_Data(pt,40,2);
display(pt);
Add_Data(pt,59,3);
display(pt);
Add_Data(pt,80,4);
display(pt);
Add_Data(pt,88,5);
display(pt);
Add_Data(pt,92,6);
display(pt);
Add_Data(pt,95,7);
display(pt);
Add_Data(pt,98,8);
display(pt);
Add_Data(pt,102,9);
display(pt);
datatype a;
printf("请输出一个非零整数:\n");
int reg=scanf("%d",&a);
printf("reg=%d\n",reg);
if(reg == 0){
printf("输入有误,请输入正确的整数\n");
exit(1);
}
if(a>0){
Insert_Data(pt,a);
display(pt);
}else if(a<0){
a = -a;
Delete_Date(pt,a);
display(pt);
}else{
printf("输入有误\n");
exit(1);
}
return 0;
}
```c
#include "seq.h"
pseq_t Init_Seq(void)
{
pseq_t pt = (pseq_t)malloc(sizeof(seq_t));
if(pt == NULL){
printf("pt malloc failure %s\n",__FUNCTION__);
return;
}
pt->data = (datatype *)malloc(sizeof(datatype) * pt->size);
if(pt->data == NULL){
printf("pt->data malloc failure %s\n",__FUNCTION__);
return;
}
pt->size = SIZE;
pt->len = Len;
return pt;
}
void Add_Data(pseq_t pt,datatype Data,int loc)/
{
if((loc<=0) || (loc>pt->len+1)){
printf("Add data failure %s\n",__FUNCTION__);
return;
}
if((pt->len)==(pt->size)){
pt->size += SIZE;
datatype *p = (datatype *)realloc(pt->data,sizeof(datatype) * pt->size);
if(p == NULL){
printf("p realloc failure %s\n",__FUNCTION__);
return;
}
pt->data = p;
}
int i;
for(i=pt->len-1;i>=loc-1;i--){
pt->data[i+1] = pt->data[i];
}
pt->data[loc-1] = Data;
pt->len++;
}
void Del_Data_Loc(pseq_t pt,int loc)
{
if((loc<=0) || (loc>pt->len)){
printf("delete failure %s\n",__FUNCTION__);
return;
}
int i;
for(i=loc;i<pt->len;i++){
pt->data[i-1] = pt->data[i];
}
pt->len--;
}
void display(pseq_t pt)
{
int i;
for(i=0;i<pt->len;i++){
printf("%d ",pt->data[i]);
}
printf("\n");
}
void Del_Data(pseq_t pt,datatype Data)
{
int i,j;
for(i=0;i<pt->len;i++){
if(pt->data[i]==Data){
for(j=i+1;j<pt->len;j++){
pt->data[j-1] = pt->data[j];
}
pt->len--;
i--;
}
}
}
void Data_Updata(pseq_t pt,datatype New_Data,int loc)
{
if((loc<=0) || (loc>pt->len)){
printf("Date Updata failure %s\n",__FUNCTION__);
return;
}
pt->data[loc-1] = New_Data;
}
void Data_Replace(pseq_t pt,datatype Replace_Data,datatype Old_Date)
{
int i;
for(i=0;i<pt->len;i++){
if(pt->data[i]==Old_Date){
pt->data[i]=Replace_Data;
}
}
}
int Find_Data(pseq_t pt,datatype F_Data)
{
int i;
for(i=0;i<pt->len;i++){
if(pt->data[i]==F_Data){
printf("%d in %d\n",F_Data,i+1);
}
}
return -1;
}
void Insert_Data(pseq_t pt,datatype Insert_Num)
{
if((pt->len)==(pt->size)){
pt->size += SIZE;
datatype *p = (datatype *)realloc(pt->data,sizeof(datatype) * pt->size);
if(p == NULL){
printf("p realloc failure %s\n",__FUNCTION__);
return;
}
pt->data = p;
}
int i=0,j,count=0;
for(;i<pt->len;i++){
if(Insert_Num<pt->data[i]){
count = i;
break;
}
}
if(i==pt->len){
pt->data[pt->len]=Insert_Num;
}else{
for(j=pt->len;j>i;j--){
pt->data[j]=pt->data[j-1];
}
pt->data[count]=Insert_Num;
}
pt->len++;
}
void Delete_Date(pseq_t pt,datatype Delete_Num)
{
int i,j;
for(i=0;i<pt->len;i++){
if(Delete_Num==pt->data[i]){
for(j=i+1;j<pt->len;j++){
pt->data[j-1] = pt->data[j];
}
pt->len--;
i--;
}
}
}
````-
#ifndef __SEQ_H__
#define __SEQ_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 5
#define Len 0
typedef int datatype;
typedef struct seq{
datatype *data;
int len;
int size;
}seq_t,*pseq_t;
extern pseq_t Init_Seq(void);
extern void Add_Data(pseq_t pt,datatype Data,int loc);
extern void display(pseq_t pt);
extern void Del_Data_Loc(pseq_t pt,int loc);
extern void Del_Data(pseq_t pt,datatype Data);
extern void Data_Updata(pseq_t pt,datatype New_Data,int loc);
extern void Data_Replace(pseq_t pt,datatype Replace_Data,datatype Old_Date);
extern int Find_Data(pseq_t pt,datatype F_Data);
extern void Insert_Data(pseq_t pt,datatype Insert_Num);
extern void Delete_Date(pseq_t pt,datatype Delete_Num);
#endif