#include<stdio.h>
int find_num(int a[],int len,int x)
{
int i;
int num=0;
for (i=0;i<len;i++)
{
if (a[i]==x)
{
num++;
}
}
return num;
}
void revers_array(int a[],int len)
{
int i;
for (i=0;i<len/2;i++)
{
int temp=a[i];
a[i]=a[len-i-1];
a[len-i-1]=temp;
}
}
int delete_array(int a[],int len,int m,int n)
{
int i;
for (i=0;i<len && a[i]!=m;i++);
if (i>=len)
{
printf("沒有找到刪除區域最小值!\n");
return len;
}
int index1=i;
for (i=index1;i<len && a[i]!=n;i++);
if (i>=len)
{
printf("沒有找到刪除區域最大值!\n");
return len;
}
int index2=i;
if (m==n)
{
return len;
}
int j=1;
for (i=index2;i<len;i++)
{
a[index1+j++]=a[i];
}
return len-(index2-index1-1);
}
int main()
{
int i;
int a[9]={1,2,3,4,5,6,7,8,9};
printf("初始的數組元素:\n");
for (i=0;i<9;i++)
{
printf("%d,",a[i]);
}
printf("\n");
printf("查詢值為7的元素個數:\n");
int num=find_num(a,9,7);
printf("個數是:%d 個\n",num);
printf("逆置後:\n");
revers_array(a,9);
for (i=0;i<9;i++)
{
printf("%d,",a[i]);
}
printf("\n");
revers_array(a,9);//恢復原數組,準備刪除4-7之間的數據
printf("刪除4-7之間的元素後:\n");
int len=delete_array(a,9,4,7);
for (i=0;i<len;i++)
{
printf("%d,",a[i]);
}
printf("\n");
return 0;
}
//程序2 采用帶頭結點的單鏈表完成全部功能
#include<stdio.h>
#include "malloc.h"
#define N 9
typedef struct Node
{
int data;
Node* next;
}LNode;
void print_node(LNode* head)
{
while (head->next)
{
printf("%d,",head->next->data);
head=head->next;
}
printf("\n");
}
void revers_node(LNode* head)
{
LNode* p,*q,*r;
p=head->next;
q=p->next;
r=NULL;
while(p)
{
p->next=r;
r=p;
p=q;
if(q)
q=q->next;
}
head->next=r;
}
void delete_node(LNode* head,int m,int n)
{
LNode* p,*q;
p=head->next;
q=p;
while(p && p->data!=m)
p=p->next;
if (!p)
{
printf("沒有找到刪除區域的最小節點值!\n");
return;
}
q=p->next;
while(q && q->data!=n)
q=q->next;
if (!q)
{
printf("沒有找到刪除區域的最大節點值!\n");
return;
}
p->next=q;
}
int find_node(LNode* head,int x)
{
int num=0;
while (head->next)
{
if (head->next->data==x)
{
num++;
}
head=head->next;
}
return num;
}
int main()
{
int i;
LNode* head=(LNode*)malloc(sizeof(LNode));
LNode* p,*q;
p=head;
q=p;
for (i=0;i<N;i++)
{
LNode* node=(LNode*)malloc(sizeof(LNode));;
node->data=i+1;
node->next=NULL;
p->next=node;
p=node;
}
p=head;
printf("初始化完成後單鏈表元素為:\n");
print_node(p);
p=head;
printf("單鏈表逆置後:\n");
revers_node(p);
print_node(p);
revers_node(p);//恢復原始單鏈表順序,準備查詢值為x的個數
head=p;
int num=find_node(p,7);
printf("值為7的元素出現了:%d 次!\n",num);
p=head;
printf("刪除了4-7之間的元素後:\n");
delete_node(p,4,7);
p=head;
print_node(p);
return 0;
}