经验丰富的老鸟来谈谈 ~ 数据结构在通信行业的应用
数据结构这玩意在通信行业里有什么应用呢?这是我们数据结构问答题 实在见识短浅希望各位老鸟谈谈自己的见解 不知道,mark 如果读过路由器等设备的软件代码,就知道数据结构的重要了。 是不是协议的问题,帧,包什么的 软件=算法+数据结构 数据结构在哪个行业内没有用啊,哈哈!
你用看一下tcp/ip源码你就知道了
软件=算法+数据结构 无线网卡驱动代码(部分):
struct header_struct {
/* 802.3 */
u8 dest;
u8 src;
u16 len;
/* 802.2 */
u8 dsap;
u8 ssap;
u8 ctrl;
/* SNAP */
u8 oui;
u16 ethertype;
} __attribute__ ((packed));
struct ieee802_11_mgmt {
u16 frame_ctl;
u16 duration_id;
u8 addr1; /* destination addr */
u8 addr2; /* source addr */
u8 addr3; /* BSSID */
u16 seq_ctl;
u8 data;
u32 fcs;
} __attribute__ ((packed));
struct ieee802_11_beacon_data {
u8 timestamp; // TSFTIMER
u16beacon_interval; // Kms between TBTTs (Target Beacon Transmission Times)
u16capability_information;
u8 data; /* contains: SSID (tag,length,value),
Supported Rates (tlv), channel */
} __attribute__ ((packed));
struct ieee802_11_auth_frame {
u16 algorithm;
u16 seq_nr;
u16 status;
u8 challenge;
} __attribute__ ((packed));
static
int auth_req(struct at76c503 *dev, struct bss_info *bss, int seq_nr, u8 *challenge)
{
struct at76c503_tx_buffer *tx_buffer;
struct ieee802_11_mgmt *mgmt;
struct ieee802_11_auth_frame *req;
int buf_len = (seq_nr != 3 ? AUTH_FRAME_SIZE :
AUTH_FRAME_SIZE + 1 + 1 + challenge);
assert(bss != NULL);
assert(seq_nr != 3 || challenge != NULL);
tx_buffer = kmalloc(buf_len + MAX_PADDING_SIZE, GFP_ATOMIC);
if (!tx_buffer)
return -ENOMEM;
mgmt = (struct ieee802_11_mgmt *)&(tx_buffer->packet);
req= (struct ieee802_11_auth_frame *)&(mgmt->data);
/* make wireless header */
/* no need to care about endianness of constants - is taken care
of in ieee802_11.h */
/* first auth msg is not encrypted */
mgmt->frame_ctl = IEEE802_11_FTYPE_MGMT | IEEE802_11_STYPE_AUTH;
if (seq_nr == 3)
mgmt->frame_ctl |= IEEE802_11_FCTL_WEP;
mgmt->duration_id = cpu_to_le16(0x8000);
memcpy(mgmt->addr1, bss->bssid, ETH_ALEN);
memcpy(mgmt->addr2, dev->netdev->dev_addr, ETH_ALEN);
memcpy(mgmt->addr3, bss->bssid, ETH_ALEN);
mgmt->seq_ctl = 0;
req->algorithm = dev->auth_mode;
req->seq_nr = cpu_to_le16(seq_nr);
req->status = 0;
if (seq_nr == 3)
memcpy(req->challenge, challenge, 1+1+challenge);
/* init. at76c503 tx header */
tx_buffer->wlength = cpu_to_le16(buf_len - AT76C503_TX_HDRLEN);
dbg(DBG_TX_MGMT, "%s: AuthReq bssid %s alg %d seq_nr %d",
dev->netdev->name, mac2str(mgmt->addr3),
req->algorithm, req->seq_nr);
if (seq_nr == 3) {
char obuf __attribute__ ((unused));
dbg(DBG_TX_MGMT, "%s: AuthReq challenge: %s ...",
dev->netdev->name,
hex2str(obuf, req->challenge, sizeof(obuf)/3,' '));
}
/* either send immediately (if no data tx is pending
or put it in pending list */
return send_mgmt_bulk(dev, tx_buffer);
} /* auth_req */
数据结构在通信行业不是应用,那是相当广的应用。 看linux源码就知道了,数据结构无处不在 数据结构和通信行业没有必然的联系吧。数据结构多用在时间/内存空间敏感的场合,比如频繁插入确需要排序的数据,那么用链表就比用数组来得合适,如果是经常要查找而且节点之间联系比较复杂,那就需要用到树形结构。
哪里有 数据结构 树形结构的学习资料?之前自己都是乱写单片机程序,不知有什么好用的结构又省rom的结构吗? 路过,学习了 一般写简单的程序,是使用不到复杂的数据结构的
我一直认为,只有在项目应用中,所学到的知识才能够得到飞一般的提升,前提是你有一定的知识基础。
我自己的感触是,买了stm32开发板在家里摸了一遍,什么感觉都没有,然后放在家里都一层灰了。。。。后来有项目要用stm32开发,不到一个月,也玩的有模有样,(借此机会也感谢amo论坛了)
页:
[1]