顺序表实例分析-第一次作业

//
HW1,9.10号截止的作业
      1)demo.c能正确的删除元素,并测试。

      2)补充addpoly.c程序完成多项式加法,并测试。

      提示:需要补充一个新的结构体,用来存储多项式中
         一项的系数和指数,注意作业截止日期是周一晚邮件主题是
      “DS_XXXX(学号)_姓名_HW1”(例如,“DS_3170931001_张三_HW1”

      交付demo.c、addpoly.c和程序运行结果的屏幕截图等文件,打包压缩名
         称和邮件主题一致,压缩后作为附件发到邮箱。

如下

//demo.c
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 20
typedef double ElemType;
typedef struct list {
  ElemType a[MAXSIZE + 1];
  int len;
} SeqList;

SeqList * InitList();
void InitList2(SeqList **ppList);
int ListFull(SeqList *pList);
int ListEmpty(SeqList *pList);
int ListLen(SeqList *pList);
void Error(char *msg);
int GetElem(SeqList *pList, int i, ElemType *pElm);
int InsertElem(SeqList * pList, int i, ElemType elm);
int DelElem(SeqList *pList, int i, ElemType *pElm);
void PrintList(SeqList *pList);


int main() {
  int i;
  SeqList *pList;
  ElemType x;
  // ElemType a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  ElemType a[11] = {0.1, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.9};
  // ElemType a[11] = {'0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
  // pList = InitList();
  InitList2(&pList);     
  for (i = 1; i <= 10; i++)
    InsertElem(pList, i, a[i]);
  PrintList(pList);
  DelElem(pList, 4, &x);
  PrintList(pList);
  return 0;
}

SeqList * InitList() {
  SeqList *pList;
  pList = (SeqList *)malloc(sizeof(SeqList));
  pList->len = 0;
  return pList;
}
void InitList2(SeqList **ppList) {
  *ppList = (SeqList *)malloc(sizeof(SeqList));
  (*ppList)->len = 0;
}
int ListFull(SeqList *pList) {
  /*
  if (pList->len == MAXSIZE)
    return 1;
  else
    return 0;
  */
  return (pList->len == MAXSIZE) ? 1 : 0;
}
int ListEmpty(SeqList *pList) {
  return (pList->len == 0) ? 1 : 0;
}
int ListLen(SeqList *pList) {
  return pList->len;
}
void Error(char *msg) {
  printf("error: %s\n", msg);
}
int GetElem(SeqList *pList, int i, ElemType *pElm) {
  if (ListEmpty(pList)) {
    Error("Get element from empty list");
    return 0;
  }
  if (i < 1 || i > MAXSIZE) {
    Error("Get element from illegal position!");
    return 0;
  }
  *pElm = pList->a[i];
  return 1;
}

int InsertElem(SeqList * pList, int i, ElemType elm) {
  int k;
  if (ListFull(pList)) {
    Error("Insert element to a full list!");
    return 0;
  }
  if (i < 1 || i > pList->len + 1) {
    Error("insert element out of range!");
    return 0;
  }
  for (k = pList->len; k >= i; k--) pList->a[k + 1] = pList->a[k];
  pList->a[i] = elm;
  pList->len += 1;
  return 1;
}

int DelElem(SeqList *pList, int i, ElemType *pElm) {
  if (ListEmpty(pList)) {
    Error("delete element from an empty list");
    return 0;
  }
  if (i < 1 || i > pList->len) {
    Error("delete element out of range");
    return 0;
  }
  *pElm = pList->a[i];
  int z;
  for(z=4;z<=9;z++)
    {
        pList->a[z]= pList->a[z+1];
    }
  pList->len -= 1;
  return 1;
}

void PrintList(SeqList *pList) {
  int i;
  for (i = 1; i <= pList->len; i++)
    printf("%.2lf ", pList->a[i]);
  putchar('\n');
}

这里写图片描述

//demo.addpoly
#include <stdio.h>
#include <stdlib.h>
#define M 11
#define N 7
#define MAXSIZE 20
typedef struct q
{
   double a;
    int p
} ElemType;
typedef struct list {
  ElemType a[MAXSIZE + 1];
  int len;
} SeqList;

SeqList * InitList();
void InitList2(SeqList **ppList);
int ListFull(SeqList *pList);
int ListEmpty(SeqList *pList);
void Error(char *msg);
int GetElem(SeqList *pList, int i, ElemType *pElm);
int InsertElem(SeqList * pList, int i, ElemType elm);
int DelElem(SeqList *pList, int i, ElemType *pElm);
void PrintList(SeqList *pList);
void add(SeqList *A,SeqList *B,SeqList *C);



int main() {
  int i, j, k;
  SeqList *A, *B, *C;

   ElemType a[M+1],b[N+1], x;

   for (i=1;i<=M;i++)
   {
       a[i].a=i+0.1;
       a[i].p=i;
   }
   for (i=1;i<=N;i++)
   {
       b[i].a=2*i+0.1;
       b[i].p=i;
   }


   A=InitList();
    B=InitList();
    C=InitList();
  for (i=1;i<=M;i++)
    InsertElem(A,i,a[i]);
    for (i=1;i<=N;i++)
    InsertElem(B,i,b[i]);
    add(A,B,C);
    PrintList(C);


  return 0;
}

SeqList * InitList()
 {
  SeqList *pList;
  pList = (SeqList *)malloc(sizeof(SeqList));
  pList->len = 0;
  return pList;
  }

void InitList2(SeqList **ppList) {
  *ppList = (SeqList *)malloc(sizeof(SeqList));
  (*ppList)->len = 0;
}
int ListFull(SeqList *pList) {
  /*
  if (pList->len == MAXSIZE)
    return 1;
  else
    return 0;
  */
  return (pList->len == MAXSIZE) ? 1 : 0;
}
int ListEmpty(SeqList *pList) {
  return (pList->len == 0) ? 1 : 0;
}
int ListLen(SeqList *pList) {
  return pList->len;
}
void Error(char *msg) {
  printf("error: %s\n", msg);
}
int GetElem(SeqList *pList, int i, ElemType *pElm) {
  if (ListEmpty(pList)) {
    Error("Get element from empty list");
    return 0;
  }
  if (i < 1 || i > MAXSIZE) {
    Error("Get element from illegal position!");
    return 0;
  }
  *pElm = pList->a[i];
  return 1;
}

int InsertElem(SeqList * pList, int i, ElemType elm) {
  int k;
  if (ListFull(pList)) {
    Error("Insert element to a full list!");
    return 0;
  }
  if (i < 1 || i > pList->len + 1) {
    Error("insert element out of range!");
    return 0;
  }
  for (k = pList->len; k >= i; k--) pList->a[k + 1] = pList->a[k];
  pList->a[i] = elm;
  pList->len += 1;
  return 1;
}

int DelElem(SeqList *pList, int i, ElemType *pElm) {
  if (ListEmpty(pList)) {
    Error("delete element from an empty list");
    return 0;
  }
  if (i < 1 || i > pList->len) {
    Error("delete element out of range");
    return 0;
  }
  *pElm = pList->a[i];
  pList->len -= 1;
  return 1;
}

void PrintList(SeqList *pList) {
  int i;
  for (i = 1; i <= pList->len; i++)
    printf("%.2lf ", pList->a[i].a);
  putchar('\n');
  for (i = 1; i <= pList->len; i++)
    printf("%d ", pList->a[i].p);
  putchar('\n');
}

void add(SeqList *A,SeqList *B,SeqList *C)
{
    int i,j;
    if (M>=N)
        i=N;
    else
        i=M;
    for (j=1;j<=i;j++)
    {
        C->a[j].a=A->a[j].a+B->a[j].a;
        C->len=C->len+1;
        C->a[j].p=A->a[j].p;
    }
    if (M>=N)
     for (j=i+1;j<=M;j++)
   {
       C->a[j].a=A->a[j].a;
       C->len++;
        C->a[j].p=A->a[j].p;
   }
   else
    for (j=i+1;j<=N;j++)
   {
       C->a[j].a=B->a[j].a;
       C->len++;
        C->a[j].p=B->a[j].p;
   }



}




这里写图片描述

猜你喜欢

转载自blog.csdn.net/X858014/article/details/82626325