⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 对于定义的操作.cpp

📁 ns2的tcl脚本的解析器,能够解析简单的有限网络下的tcl脚本,并保存为.data文件
💻 CPP
字号:
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include "stdlib.h"
#include "搜索关键词.h"
#include "提取定义语句.h"
#include "对于定义的操作.h"

//按结点名查结点序号
int nodeseq_index(char *word,struct NODE *nodehead)
{
	struct NODE *temp;
	temp=nodehead;
	word++;
	while((temp->next!=NULL)&&(strcmp(temp->name,word)!=0))temp=temp->next;
	if (strcmp(temp->name,word)==0)return(temp->seq);
	else return(0);
}

//生成新的链表节点
struct LINK *link_genera(struct buffer *sentehead,struct NODE *nodehead,int flag)
{
	struct LINK *link;
	link=(LINK *)malloc(sizeof(LINK));
	link->from=nodeseq_index(sentehead->next->word,nodehead);
	link->end=nodeseq_index(sentehead->next->next->word,nodehead);
	strcpy(link->capability,sentehead->next->next->next->word);
	link->next=NULL;
	link->type=flag;
	return(link);
}
//插入新的链表结点
void link_inser(struct LINK *newlink,struct LINK *linktail)
{
	newlink->next=linktail->next;
	linktail->next=newlink;
	linktail=newlink;
}
//查找链表的队列尾
struct LINK *link_index(struct LINK *linkhead)
{
	struct LINK *temp;
	temp=linkhead;
	while(temp->next!=NULL)temp=temp->next;
	return(temp);
}
//链表的定义操作
void link_operate(struct buffer *sentehead,struct LINK *linkhead,struct NODE *nodehead,int flag)
{
	struct LINK *linktail,*temp;
	temp=link_genera(sentehead,nodehead,flag);
	linktail=link_index(linkhead);
	link_inser(temp,linktail);
}


//生成新结点
struct NODE *node_genera(struct buffer *sentehead,int seq)
{
	struct NODE *node;
	node=(NODE *)malloc(sizeof(NODE));
	strcpy(node->name,sentehead->next->word);
	node->seq=seq;
	node->next=NULL;
	return(node);
}
//插入新结点
void node_inser(struct NODE *newnode,struct NODE *nodetail)
{
	newnode->seq=nodetail->seq+1;
	newnode->next=nodetail->next;
	nodetail->next=newnode;
	nodetail=newnode;
}
//查找结点队列尾
struct NODE *node_index(struct NODE *nodehead)
{
	struct NODE *temp;
	temp=nodehead;
	while(temp->next!=NULL)temp=temp->next;
	return(temp);
}
//结点定义的操作
void node_operate(struct buffer *sentehead,struct NODE *nodehead)
{
	struct NODE *nodetail,*temp;
	nodetail=node_index(nodehead);
	temp=node_genera(sentehead,nodetail->seq);
	node_inser(temp,nodetail);
}

//对定义的操作
struct topo *operate(struct topo *result,struct buffer *sentehead,int flag)
{
	if (flag==1) node_operate(sentehead,result->nodehead);
	else link_operate(sentehead,result->linkhead,result->nodehead,flag);
	return(result);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -