色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 數(shù)據(jù)結(jié)構(gòu)之順序表

數(shù)據(jù)結(jié)構(gòu)之順序表 時間:2018-01-10      來源:未知

 什么是順序表?

首先順序表指的是在數(shù)據(jù)結(jié)構(gòu)中的一種線性存儲結(jié)構(gòu),區(qū)別于鏈式表。

其主要借助元素在存儲器中的相對位置來表示數(shù)據(jù)元素間的邏輯關(guān)系。通常存將數(shù)據(jù)儲在一片連續(xù)的空間上,例如數(shù)組。

結(jié)構(gòu)如下圖:

數(shù)據(jù)結(jié)構(gòu)順序表

順序表的實現(xiàn):

在C語言中,一維數(shù)組的元素也是存放于一片連續(xù)的存儲空間中,故可借助于C語言中一維數(shù)組類型來描述線性表的順序存儲結(jié)構(gòu)。

頭文件如下:
#ifndef _SEQLIST_H_
#define _SEQLIST_H_
#include <stdio.h>
#include <stdlib.h>
#define N 10

//順序表結(jié)構(gòu)的定義

//data為數(shù)組,用于存儲數(shù)據(jù)

//last為整形數(shù),用來記錄數(shù)組中后一個元素的下標

typedef struct seqlist

{

int data[N];

int last;

}seqlist_t;

//創(chuàng)建順序表

seqlist_t *seqlistCreate();

//判斷順序表是否未滿

intisFull(seqlist_t *s);

//判斷順序表是否為空

intisEmtpy(seqlist_t *s);

//插入數(shù)據(jù)

intseqlistInesert(seqlist_t *s,intvalue,int offset);

//刪除數(shù)據(jù)

intseqlistDelete(seqlist_t *s,int offset);

//查看順序表

void seqlistShow(seqlist_t *s);

#endif

函數(shù)實現(xiàn)如下:
#include "seqlist.h"
//創(chuàng)建順序表,返回順序表的地址
seqlist_t *seqlistCreate()
{
  seqlist_t *s = NULL;
  s = (seqlist_t*)malloc(sizeof(seqlist_t));
  if(NULL == s)
  {
        printf("create err,fail to malloc\n");
        return NULL;
  }
  s->last = -1;
 
  return s;
}
//判斷順序表是否未滿,last值為N-1時順序表為滿
intisFull(seqlist_t *s)
{
  return s->last == N - 1;
}
//判斷順序表是否為空
intisEmtpy(seqlist_t *s)
{
  return s->last == -1;
}
//插入數(shù)據(jù)
//value:插入數(shù)據(jù)
//offset:插入位置
intseqlistInesert(seqlist_t *s,intvalue,int offset)
{
  if(isFull(s))//判斷順序表是否為滿
  {
        printf("insert err,seqlist is full\n");
        return -1;
  }
  if(offset < 0 || offset > s->last + 1)//判斷插入的位置offset是否有誤
  {
        printf("insert err,err offset\n");
        return -1;
  }
  inti = s->last;//臨時變量i保存last;
  while(i>= offset)//移動i所標記的元素,后移動的為offset標記位置的元素
  {
        s->data[i + 1] = s->data[i];
        i--;
  }
  s->data[offset] = value;
  s->last++;//讓last標記新的末尾元素。
 
  return 1;
}
//刪除數(shù)據(jù)
intseqlistDelete(seqlist_t *s,int offset)
{
  if(isEmtpy(s))
  {
        printf("delete err,seqlist is empty\n");
        return -1;
  }
  if(offset < 0 || offset > s->last)
  {
        printf("delete err,err offset\n");
        return -1;
  }
  int ret = s->data[offset];
  while(offset < s->last)
  {
        s->data[offset] = s->data[offset + 1];
        offset++;
  }
  s->last--;
 
  return ret;
}
//查看順序表
void seqlistShow(seqlist_t *s)
{
  inti = 0;
  while(i<= s->last)
  {
        printf("%d ",s->data[i]);
        i++;
  }
}

主函數(shù)用于測試:
#include "seqlist.h"
intmain()
{
  seqlist_t *s = seqlistCreate();
  seqlistInesert(s,1,0);
  seqlistInesert(s,2,1);
  seqlistInesert(s,3,2);
  seqlistInesert(s,4,3);
  seqlistInesert(s,5,4);
  seqlistShow(s);
  puts("");
  seqlistDelete(s,4);
  seqlistShow(s);
  puts("");
 
  return 0;
}

上一篇:標準IO 中對文件的基本操作

下一篇:音頻解碼的兩個標準AC97和IIS

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 强伦人妻一区二区三区视频18 | 久久99国产综合精合精品 | 欧美高潮抽搐喷水大叫 | 久久三级视频 | 无码高潮又爽又黄A片软件 巨爆乳寡妇中文在线观看 夜夜天天噜狠狠爱2019 | 无人在线视频观看免费 | 肉蒲团从国内封禁到日本成经典 | 日韩欧美群交P片內射中文 亚洲综合区夜夜久久久 | 亚洲AV无码不卡一区二区三区 | 在线观看日本亚洲一区 | 国产又粗又猛又大爽又黄 | 欧美肥屁videossex精品 | 欧洲人与动牲交α欧美精品 | 丁香六月深婷婷激情五月 | 久久国产精品无码一区二区三区 | 老熟妇性老熟妇性色变态 | 久久97国产超碰青草 | 日本熟日本熟妇在线视频 | 无人区码一码二码三mba智库 | 伊人久久大香线蕉亚洲五月天 | 日本乱偷互换人妻中文字幕 | 免费A级毛片无码A∨蜜芽按摩 | 桃子视频在线观看免费视频网 | 4455永久在线观看 | 亚洲精品v欧洲精品v日韩精品 | 亚洲日产无码中文字幕 | 18禁男女爽爽爽午夜网站免费 | 免费看成人片 | 噼里啪啦国语在线播放中文版 | 国产精品久久午夜夜伦鲁鲁 | 亚洲日产韩国一二三四区 | 欧美性猛交╳XXX富婆 | 我趁老师睡觉偷偷的脱她内裤 | 极品白浆 | 日本爽快片视频 | 人人澡视频| 四虎精品影库4HUTV四虎 | 国产一区二区不卡在线看 | 麻豆影视国产在线观看 | 国产成人无码视频一区二区三区 | FREE性丰满HD毛多多 |