亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

使用單鏈表實現多項式計算示例

2020-01-26 15:34:03
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>

//比較函數返回值
#define A_EQUAL_B  0
#define A_LARGE_B  1
#define A_LOWER_B -1

//錯誤返回之集合
#define SUCCESS            0
#define POINT_ARG_IS_NULL -1
#define LINKLIST_IS_NULL  -2
#define NOT_FOUND         -3

typedef struct
{
    int cst_term;//常數項
    int idx_term;//指數
}factor;

typedef factor data_t;
typedef struct linklist
{
 data_t data;
 struct linklist *next;
}linklist;

/*
 *
 * malloc頭節點,頭節點內的數據是無效的
 *
 */
linklist *creat_lnklst()
{
 linklist *head = (linklist *)malloc(sizeof(linklist));
 head->next = NULL;
 return head;
}

/*
 * pll是插入節點的前一項
 * data是數據
 * 為新節點分配內存,之后插入
 *
 */
int ins_head_lnklst(linklist *pll, const data_t *data)
{
 linklist *newnode = NULL;

 if(NULL == pll || NULL == data)
  return POINT_ARG_IS_NULL;

 newnode = (linklist *)malloc(sizeof(linklist));

 newnode->data = *data;

 newnode->next = pll->next;
 pll->next = newnode;

 return SUCCESS;
}

/*
 *
 * pll是要刪除節點的前一個
 * data存放刪除的數據
 * 檢查pll是否是空
 * 檢查鏈表是否為空
 * data是NULL就不用保存刪除的數據
 *
 */
int del_head_lnklst(linklist *pll, data_t *data)
{
 linklist *tmp = NULL;

 if(NULL == pll)
  return POINT_ARG_IS_NULL;

 if(pll->next == NULL)
  return LINKLIST_IS_NULL;

 tmp = pll->next;

 if(NULL != data)
  *data = tmp->data;

 pll->next = tmp->next;

 free(tmp);

 return SUCCESS;
}

/*
 *
 * 內部支持data_t大小比較函數
 * 如果data_t修改成其他類型則需要修改此方法
 *
 */
static int cmp_data(const data_t *a, const data_t *b)
{
 int res = 0;

 if(a == NULL || b == NULL)
  return POINT_ARG_IS_NULL;

 res = a->idx_term - b->idx_term;
 if(res == 0)
  return A_EQUAL_B;
 else if(res > 0)
  return A_LARGE_B;
 else
  return A_LOWER_B;
}

/*
 *
 * 實現在鏈表中查找data匹配的前一項
 * compare是實現虛擬數據類型比較函數
 *
 */
linklist * locate_lnklst(linklist *pll, const data_t *data, int (*compare)(const data_t *, const data_t *))
{
 if(NULL == pll || data == NULL)
  return NULL;

 if(NULL == compare)
  compare = cmp_data;

 while(pll->next)
 {
  if(A_EQUAL_B == compare(&(pll->next->data), data))
   return pll;
  pll = pll->next;
 }

 return NULL;
}

/*
 *
 * 打印鏈表數據
 * 檢查參數空指針
 * 檢查空鏈表
 *
 */
int print_lnklst(linklist *pll)
{
 if(NULL == pll)
  return POINT_ARG_IS_NULL;

 if((pll = pll->next) == NULL)
 {
  printf("%s/n", "no element in linklist./n");
  return LINKLIST_IS_NULL;
 }

 while(pll)
 {
        if(pll->next == NULL)
        {
      printf("%2d*X^%1d ", pll->data.cst_term, pll->data.idx_term);
        }
        else
        {
      printf("%2d*X^%1d +", pll->data.cst_term, pll->data.idx_term);
        }
  pll = pll->next;
 }
 printf("/n");

 return SUCCESS;
}

/*
 *
 * 刪除對應數據的節點
 *
 */
int locate_del_lnklst(linklist *pll, const data_t *data)
{
 linklist *prev = NULL;

 if(NULL == pll || data == NULL)
  return POINT_ARG_IS_NULL;

 prev = locate_lnklst(pll, data, NULL);
 if(NULL == prev)
  return NOT_FOUND;

 return del_head_lnklst(prev, NULL);
}

int add_linklist(linklist *a, linklist *b)
{
    linklist *tmp;
    if(NULL == a || NULL == b)
        return POINT_ARG_IS_NULL;

    if((b = b->next) == NULL)
    {
        return LINKLIST_IS_NULL;
    }

    while(b != NULL)
    {
        tmp = locate_lnklst(a, &b->data, NULL);
        if(NULL == tmp)
            ins_head_lnklst(a, &b->data);
        else
            tmp->next->data.cst_term += b->data.cst_term;
        b = b->next;
    }
    return 0;
}

/*
 *
 * A = 1 + 2*X + 3*X^2
 * B = 4 + 5*X + 6*X^2
 * R = A + B
 *   = 5 + 7*X + 9*X^2
 *
 */
int init_a_b(linklist *a, linklist *b)
{
    factor tmp;
    tmp.cst_term = 1;
    tmp.idx_term = 0;
    ins_head_lnklst(a, &tmp);
    tmp.cst_term = 2;
    tmp.idx_term = 1;
    ins_head_lnklst(a, &tmp);
    tmp.cst_term = 3;
    tmp.idx_term = 2;
    ins_head_lnklst(a, &tmp);

    tmp.cst_term = 4;
    tmp.idx_term = 0;
    ins_head_lnklst(b, &tmp);
    tmp.cst_term = 5;
    tmp.idx_term = 1;
    ins_head_lnklst(b, &tmp);
    tmp.cst_term = 6;
    tmp.idx_term = 2;
    ins_head_lnklst(b, &tmp);
    return 0;
}
int main(int argc, const char *argv[])
{
 linklist *fml_a = creat_lnklst();
 linklist *fml_b = creat_lnklst();
    init_a_b(fml_a, fml_b);

    printf("A =");
    print_lnklst(fml_a);

    printf("B =");
    print_lnklst(fml_b);

    add_linklist(fml_a, fml_b);
    printf("A + B =");
    print_lnklst(fml_a);
 return 0;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕在线免费观看| 丰满岳妇乱一区二区三区| 91精品国产91久久久久久吃药| 日韩欧美一区二区三区| 亚洲高清久久网| 欧美性色视频在线| 国产精品第100页| 国产97在线视频| 97国产精品免费视频| 中文字幕欧美精品在线| 91国自产精品中文字幕亚洲| 日韩精品欧美国产精品忘忧草| 日韩小视频在线| 日韩精品中文字幕在线播放| 在线电影欧美日韩一区二区私密| 国产精品av在线| 成人有码在线视频| 国产啪精品视频| 日韩精品免费在线视频| 久久久91精品国产一区不卡| 日韩精品视频免费在线观看| 日韩大陆毛片av| 91精品国产综合久久香蕉| 久久久综合免费视频| 欧美大学生性色视频| 91久热免费在线视频| 久久精品电影一区二区| 欧美日韩亚洲一区二区| 色狠狠av一区二区三区香蕉蜜桃| 91网在线免费观看| 亚洲三级av在线| 欧美乱大交xxxxx| 日本不卡高字幕在线2019| 国产精品久久久久9999| 国产成人亚洲综合91精品| 91美女片黄在线观看游戏| 国产成人av在线| 国产精品高潮呻吟久久av野狼| 精品偷拍一区二区三区在线看| 亚洲成年人在线| 亚洲精品福利在线| 一区二区欧美久久| 97色在线播放视频| 日韩精品中文字幕在线观看| 91国语精品自产拍在线观看性色| 午夜精品福利电影| 久久综合网hezyo| 在线播放国产精品| 日韩欧美黄色动漫| 91精品国产91久久久久| 国产欧美精品久久久| 中文字幕在线看视频国产欧美| 国产精品麻豆va在线播放| 97视频在线观看成人| 日韩av毛片网| 欧美一级大片在线观看| 国产精品三级美女白浆呻吟| 日韩精品亚洲元码| 亚洲自拍偷拍第一页| 成人免费视频97| 亚洲激情在线观看视频免费| 日韩中文字幕精品视频| 亚洲精品自拍偷拍| 国产精品国产自产拍高清av水多| 国产精品一区专区欧美日韩| 久久精品久久久久久国产 免费| 最新国产精品拍自在线播放| 91久久精品国产| 日韩av片电影专区| 亚洲人在线视频| 午夜精品一区二区三区在线| 日本中文字幕不卡免费| 精品高清一区二区三区| 午夜剧场成人观在线视频免费观看| 日韩中文视频免费在线观看| 亚洲欧洲一区二区三区在线观看| 欧美在线视频一区二区| 久99九色视频在线观看| 一区二区成人精品| 国产69精品久久久久99| 欧美成人午夜激情| 国产成人精品电影久久久| 国自产精品手机在线观看视频| 亚洲视频在线观看网站| 欧美国产精品日韩| 色99之美女主播在线视频| 精品一区二区三区四区在线| 日韩免费av一区二区| 精品久久久久久久久久ntr影视| 国产精品白嫩初高中害羞小美女| 亚洲一区二区三| 国产精品羞羞答答| 欧美精品电影免费在线观看| 欧美成人三级视频网站| 97免费视频在线播放| 欧美日韩激情小视频| www.欧美三级电影.com| 欧美在线激情视频| yw.139尤物在线精品视频| 亚洲欧洲在线观看| xvideos国产精品| 亚洲女人天堂成人av在线| 亚洲天堂免费在线| 欧美性高潮在线| 日韩欧美在线视频日韩欧美在线视频| 国产精品久久久久久久久久久新郎| 欧美裸体男粗大视频在线观看| 欧美在线视频在线播放完整版免费观看| 91亚洲精华国产精华| 亚洲精品网站在线播放gif| 欧美激情高清视频| 久久国产视频网站| 午夜精品久久久久久久男人的天堂| 日韩av免费在线看| 亚洲少妇中文在线| 国产日韩综合一区二区性色av| 最近中文字幕mv在线一区二区三区四区| 色噜噜亚洲精品中文字幕| 亚洲高清一区二| 亚洲日本中文字幕免费在线不卡| 4388成人网| 91九色单男在线观看| 久久国产精彩视频| 日韩av第一页| 成人黄色av免费在线观看| 国产精品日韩av| 国产不卡精品视男人的天堂| 日韩电影在线观看免费| 成人h视频在线观看播放| 97国产在线视频| 中文字幕日韩欧美精品在线观看| 欧美美女18p| 国产精品jizz在线观看麻豆| 久久久久国产精品www| 国产欧美日韩视频| 亚洲韩国欧洲国产日产av| 日韩精品在线观看一区二区| 国产精品爽爽ⅴa在线观看| 欧美自拍视频在线| 午夜剧场成人观在线视频免费观看| 亚洲激情在线观看| 色综合色综合久久综合频道88| 亚洲成年人在线| 中文字幕日韩专区| 亚洲欧美日韩国产中文| 久久影院中文字幕| 亚洲国产精品va在线看黑人| 国产精品美女在线观看| 亚洲四色影视在线观看| 亚洲精品欧美一区二区三区| 成人黄色免费在线观看| 国产精品国产福利国产秒拍| 国产一区二区三区在线观看视频| 欧美性生交xxxxxdddd| 国产精品久久久久久久久免费看| 久久在精品线影院精品国产| 亚洲va男人天堂| 久久久久久久久久国产| 欧美黄色三级网站| 久久成人18免费网站| 久久精品久久久久久国产 免费| 中文字幕日韩欧美在线| 亚洲精品国精品久久99热| 黄色精品在线看|