数据结构上机题c语言

Python09

数据结构上机题c语言,第1张

#include <stdio.h>

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)

}