【C++】链表的定义及其基本操作-创新互联
typedef struct node //定义链表节点相关结构体
{int data;
struct node *next;
node(int x) : //构造函数,用于在创建对象时初始化对象的各个成员
data(x), next(NULL){}
}Node;
定义链表结构体struct linklist //定义链表结构体
{public:
void create()
{head = new Node(0); //初始化头节点,即调用了上面的构造函数,使head->data=0,head->next=NULL
if(head == NULL) //内存已满的情况下,无法给头节点分配地址,报错
{ cout<< "new failed"<< endl;
return;
}
}
void insert(int m_data) //头插法
{Node *m_new = new Node(0); //创建一个新的节点
if(m_new == NULL)
{ cout<< "new failed"<< endl;
return;
}
m_new->data = m_data;
m_new->next = NULL; //这条语句可以省略
m_new->next = head->next; //将新节点插入到头节点后
head->next = m_new;
}
void show()
{Node *p = head->next;
while(p != NULL) //循环遍历链表打印每一个节点数据
{ cout<< p->data<< " ";
p = p->next;
}
cout<< endl; //换行
}
private:
Node *head;
};
上面这一串代码建立了链表结构体,但其中insert采用的是头插法,下面展示一下尾插法该怎么写
成都创新互联公司10多年企业网站设计服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,企业网站设计及推广,对成都不锈钢雕塑等多个行业拥有丰富的网站运维经验的网站建设公司。void insert(int m_data) //尾插法
{Node *m_new = head; //创建一个新的节点并指向头节点
Node *p = new node(0);
if(p== NULL)
{ cout<< "new failed"<< endl;
return ;
}
while(m_new->next!=NULL){//使m_new指针指向最后一个节点
m_new = m_new->next;
}
m_new->next = p;
p->data = m_data;
}
在主函数中进行调用int main()
{struct linklist list;
list.create();
int n = 10;
while(n--)
{list.insert(n);
}
list.show();
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:【C++】链表的定义及其基本操作-创新互联
标题路径:http://myzitong.com/article/eipje.html