2024年2月2日
1.有一个整形数组:int arr[](数组的值由外部输入决定),一个整型变量: x(也由外部输入决定)。要求:
1)删除数组中与x的值相等的元素2)不得创建新的数组
3)最多只允许使用单层循环
4)无需考虑超出新数组长度后面的元素,所以,请返回新数组的长度例如:{1,2,3,5,7,3,5,9) x=3
原数组的有效部分变为:(1,2,5,7,5,9}
头文件:
#ifndef __HEAD_H__
#define __HEAD_H__
#include
#include
#include
#define MAXSIZE 10
enum{FALSE=-1,SUCCESS};
typedef int datatype;
typedef struct Node
{
datatype data[MAXSIZE];
int len;
}*Linklist;
Linklist create();
int full(Linklist list);
int insert(Linklist list,datatype element);
int delete_index(Linklist list,int index);
int delete(Linklist list,datatype key);
int output(Linklist list);
#endif
主函数:
#include"head.h"
int main(int argc, const char *argv[])
{
Linklist list=create();
int num;
printf("please enter num:");
scanf("%d",&num);
int element;
for(int i=0;ilen);
return 0;
}
自定义函数:
#include"head.h"
/*
* function: 内存申请
* @param [ in]
* @param [out] 成功返回首地址,失败返回NULL
* @return
*/
Linklist create()
{
Linklist s=(Linklist)malloc(sizeof(struct Node));
if(NULL==s)
return NULL;
memset(s->data,0,sizeof(s->data));
s->len=0;
return s;
}
/*
* function: 判满
* @param [ in] 顺序表
* @param [out] 满了输出-1;未满输出0
* @return
*/
int full(Linklist list)
{
return list->len==MAXSIZE?FALSE:SUCCESS;
}
/*
* function: 尾插
* @param [ in] list 插入值
* @param [out] 成功返回0,失败返回-1
* @return
*/
int insert(Linklist list,datatype element)
{
if(NULL==list || full(list))
return FALSE;
list->data[list->len++]=element;
return SUCCESS;
}
/*
* function: 任意下标删除
* @param [ in] 数组,下标
* @param [out] 成功返回0,失败返回-1
* @return
*/
int delete_index(Linklist list,int index)
{
if(NULL==list || list->lenlen;i++)
{
list->data[i-1]=list->data[i];
}
list->len--;
return SUCCESS;
}
/*
* function: 按元素删除
* @param [ in] list 删除元素
* @param [out] 成功返回0,失败返回-1
* @return
*/
int delete(Linklist list,datatype key)
{
if(NULL==list)
return FALSE;
for(int i=0;ilen;i++)
{
if(list->data[i]==key)
{
delete_index(list,i);
}
}
return SUCCESS;
}
/*
* function: 遍历输出
* @param [ in] list
* @param [out] 成功返回0,失败返回-1
* @return
*/
int output(Linklist list)
{
if(NULL==list)
return FALSE;
for(int i=0;ilen;i++)
{
printf("%-5d",list->data[i]);
}
return SUCCESS;
}
运行结果:
头文件:
#ifndef __head_h__
#define __head_h__
#include
#include
#include
typedef int datatype;
typedef struct Node
{
datatype data;
struct Node *next;
}*Linklist;
Linklist create();
Linklist insert_head(Linklist head,datatype element);
Linklist insert_rear(Linklist head,datatype element);
void output(Linklist head);
Linklist delete_head(Linklist head);
Linklist delete_rear(Linklist head);
#endif
主函数:
#include"head.h"
int main(int argc, const char *argv[])
{
datatype element;
int num;
Linklist head=NULL;
printf("please enter num:");
scanf("%d",&num);
for(int i=0;i
自定义函数:
#include"head.h"
/*
* function: 创建新节点
* @param [ in]
* @param [out] 成功返回首地址,失败返回NULL
* @return
*/
Linklist create()
{
Linklist s=(Linklist)malloc(sizeof(struct Node));
if(s==NULL)
return NULL;
s->data='\0';
s->next=NULL;
return s;
}
/*
* function: 头插
* @param [ in] 头 插入的值
* @param [out] 头
* @return
*/
Linklist insert_head(Linklist head,datatype element)
{
Linklist s=create();
s->data=element;
if(head==NULL)
{
head=s;
return head;
}
else
{
s->next=head;
head=s;
}
return head;
}
/*
* function: 尾插
* @param [ in] 头 插入值
* @param [out] 头
* @return
*/
Linklist insert_rear(Linklist head,datatype element)
{
Linklist s=create();
s->data=element;
if(head==NULL)
{
head=s;
return head;
}
Linklist p=head;
while(p->next)
{
p=p->next;
}
p->next=s;
return head;
}
/*
* function: 遍历输出
* @param [ in] 头
* @param [out]
* @return
*/
void output(Linklist head)
{
if(head==NULL)
{
puts("empty");
return;
}
Linklist p=head;
while(p!=NULL)
{
printf("%-5d",p->data);
p=p->next;
}
}
/*
* function: 头删
* @param [ in] 头
* @param [out] 头
* @return
*/
Linklist delete_head(Linklist head)
{
if(head==NULL)
return head;
Linklist del=head;
head=head->next;
free(del);
return head;
}
/*
* function: 尾删
* @param [ in] 头
* @param [out] 头
* @return
*/
Linklist delete_rear(Linklist head)
{
if(head==NULL)
return NULL;
if(head->next==NULL)
{
free(head);
return NULL;
}
Linklist p=head;
while(p->next->next)
{
p=p->next;
}
Linklist del=p->next;
free(del);
return head;
}
运行结果: