void MergeArr(int a[], int m, int b[], int n, int c[])
{
int i = 0, j = 0, k = 0
while(i<m && j<n)
{
if(a[i] < b[j])
c[k++] = a[i++]
else
c[k++] = b[j++]
}
while(i < m)
c[k++] = a[i++]
while(j < n)
c[k++] = b[j++]
}
int main()
{
int i
// 用数组表示顺序表
int A[4] = {2,5,9,10}
int B[6] = {1,3,4,7,8,12}
int C[10] = {0}
MergeArr(A, 4, B, 6, C)
for(i = 0 i < 10 ++i)
printf("%d ", C[i])
return 0
}
#include <stdio.h>
#include"string.h"
#include <stdlib.h>
#define N 100000
#define M 10000
int fun(char a[])
{
int sum=0
for(int i=0i<strlen(a)i++)
sum+=a[i]//字符数字化→ACSII码之和是单词标志之一;
return sum
}
int main() {
/*_________________________________________________*/
FILE *fp
char b[N + 1]
//判断文件是否打开
if ( (fp = fopen("D:\\英语论文.txt", "rt")) == NULL )/*这里D:\\ 英语论文.txt 是路径;读取D盘下,名为(英语论文)的文本文件*/
{
puts("文件读取失败!\n")
exit(0)
}
else
{
puts("文件读取成功")
puts("开始计算")
}
//循环读取文件的每一行数据
while( fgets(b, N, fp) != NULL )
{
/*__________________________________________*/
int d[M]={0},x=0
char a[111][11]={'\0'}
char t[11]={'\0'}
int k=0,j=0
for(int i=0i<strlen(b)i++)
{
if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z'))//不是空格就储存在二维数组中,一行一个单词;
a[k][j++]=b[i]
if(b[i]==' ')//遇到下一个空格就换行,进而开始下一个单词的储存;
{
k++
j=0
}
}
int max=fun(a[0])
for(int i=0i<=ki++)
{
d[fun(a[i])]++//用每个单词的ASCII码之和桶排序,这也即是字典序;
if(fun(a[i])>max)
max=fun(a[i])//找出最大的作为上限;
}
int name
for(int i=0i<=maxi++)
{
name=0
for(int j=0j<=kj++)
{
if(fun(a[j])==i)/*a[j]的ASCII码之和等于i,说明d[i]是记录单词a[j]的,d[i]的数就是a[j]出现的频率*/
{
name=j//记录单词下标;
}
}
if(d[i]!=0)//d[i]!=0即i是某个单词的ASCII码之和
{
printf("%s %d\n",a[name],d[i])//输出
}
}
/*___________________________________________*/
}
//结束关闭文件
fclose(fp)
return 0
}
这是修改过的,不过没太大变化,只是加了一个文件读取代码;
与你那个差不多,有些地方自己改下就行了
1)创建一个空的顺序表L
(2)依次插入a,b,c,d,e五个元素
(3)在第4个元素位置上插入元素f
(4)删除L的第3个元素
(5)输出顺序表L
#include <stdlib.h>
#include <stdio.h>
#include<malloc.h>
typedef char ElemType
typedef struct LNode
{ ElemType data
struct LNode *next
}LNode ,LinkList
LinkList * InitList( )
{
LinkList * L=NULL
L=(LinkList *)malloc(sizeof(LinkList))
L->next=NULL
return L
}
void DestroyList(LinkList * L)
{
LinkList *p=L,*q=p->next
while(q!=NULL)
{
free(p)p=qq=p->next
}
free(p)
}
void DispList(LinkList *L)
{
LinkList *p=L->next
while (p!=NULL)
{ printf("%c",p->data)
p=p->next
}
printf("\n")
}
void ListInsert(LinkList * L,int i,ElemType e)
{
int j=0
LinkList *p=L, *s
while(j<i-1 &&p!=NULL)
{ j++p=p->next}
if(p==NULL)
return
else
{
s=(LinkList *)malloc(sizeof(LinkList))
s->next = NULL
s->data=e
s->next=p->next
p->next=s
}
}
void ListDelete(LinkList * L,int i)
{
int j=0
LinkList *p=L, *q
while(j<i-1 &&p!=NULL)
{ j++p=p->next}
if(p==NULL)
return
else
{ q=p->nextp->next=q->nextfree(q)}
}
void main()
{
LinkList *L=NULL,*pL = NULL
int i
char f
L = InitList()
printf("Please enter char:\n")
for(i=0i<5i++)
{
LinkList *pt=(LinkList *)malloc(sizeof(LinkList))
pt->next = NULL
scanf("%c",&(pt->data))
getchar()
if(L->next == NULL)
L->next = pt
else
pL->next = pt
pL=pt
}
DispList(L)
printf("Please enter a char:\n")
scanf("%c",&f)
ListInsert(L,4,f)
DispList(L)
ListDelete(L,3)
DispList(L)
DestroyList( L)
}