c++链表怎么用啊?
5个回答
2015-12-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作。
这是链表函数:
#include <cstdio>
#include <cstdlib>
#include <iostream>
struct Node{
int data;//数据域
struct Node * next;//指针域
};
/**************************************************************************************
*函数名称:Create
*函数功能:创建链表.
*输入:各节点的data
*返回值:指针head
*************************************************************************************/
Node * Create()
{
int n = 0;
Node *head,*p1,*p2;
p1=p2= new Node;
cinp1-data;
head = NULL;
while(p1-data!=0)
{
if(n == 0)
{
head = p1;
}
else
p2-next = p1;
p2 =p1;
p1 = new Node;
cinp1-data;
n ;
}
p2-next = NULL;
return head;
}
/**************************************************************************************
*函数名称:insert
*函数功能:在链表中插入元素.
*输入:head 链表头指针,p新元素插入位置,x 新元素中的数据域内容
*返回值:无
*************************************************************************************/
void insert(Node * head,int p,int x){
Node * tmp = head;
//for循环是为了防止插入位置超出了链表长度
for(int i = 0;ip;i )
{
if(tmp == NULL)
return ;
if(ip-1)
tmp = tmp-next;
}
Node * tmp2 = new Node;
tmp2-data = x;
tmp2-next = tmp-next;
tmp-next = tmp2;
}
/**************************************************************************************
*函数名称:del
*函数功能:删除链表中的元素
*输入:head 链表头指针,p 被删除元素位置
*返回值:被删除元素中的数据域.如果删除失败返回-1
**************************************************************************************/
int del(Node * head,int p){
Node * tmp = head;
for(int i = 0;ip;i )
{
if(tmp == NULL)
return -1;
if(ip-1)
tmp = tmp-next;
}
int ret = tmp-next-data;
tmp-next = tmp-next-next;
return ret;
}
void print(Node *head){
for(Node *tmp = head; tmp!=NULL; tmp = tmp-next)
printf(%d ,tmp-data);
printf(\n);
}
int main(){
Node * head;
head = new Node;
head-data = -1;
head-next=NULL;
return 0;
}
这是链表函数:
#include <cstdio>
#include <cstdlib>
#include <iostream>
struct Node{
int data;//数据域
struct Node * next;//指针域
};
/**************************************************************************************
*函数名称:Create
*函数功能:创建链表.
*输入:各节点的data
*返回值:指针head
*************************************************************************************/
Node * Create()
{
int n = 0;
Node *head,*p1,*p2;
p1=p2= new Node;
cinp1-data;
head = NULL;
while(p1-data!=0)
{
if(n == 0)
{
head = p1;
}
else
p2-next = p1;
p2 =p1;
p1 = new Node;
cinp1-data;
n ;
}
p2-next = NULL;
return head;
}
/**************************************************************************************
*函数名称:insert
*函数功能:在链表中插入元素.
*输入:head 链表头指针,p新元素插入位置,x 新元素中的数据域内容
*返回值:无
*************************************************************************************/
void insert(Node * head,int p,int x){
Node * tmp = head;
//for循环是为了防止插入位置超出了链表长度
for(int i = 0;ip;i )
{
if(tmp == NULL)
return ;
if(ip-1)
tmp = tmp-next;
}
Node * tmp2 = new Node;
tmp2-data = x;
tmp2-next = tmp-next;
tmp-next = tmp2;
}
/**************************************************************************************
*函数名称:del
*函数功能:删除链表中的元素
*输入:head 链表头指针,p 被删除元素位置
*返回值:被删除元素中的数据域.如果删除失败返回-1
**************************************************************************************/
int del(Node * head,int p){
Node * tmp = head;
for(int i = 0;ip;i )
{
if(tmp == NULL)
return -1;
if(ip-1)
tmp = tmp-next;
}
int ret = tmp-next-data;
tmp-next = tmp-next-next;
return ret;
}
void print(Node *head){
for(Node *tmp = head; tmp!=NULL; tmp = tmp-next)
printf(%d ,tmp-data);
printf(\n);
}
int main(){
Node * head;
head = new Node;
head-data = -1;
head-next=NULL;
return 0;
}
展开全部
1、下面的程序是单链表的建立与输出,都有详细的注释。这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值。
2、例程:
#include<stdio.h>
#include<stdlib.h>
//链表的建立与输出
struct node//定义结点的类型
{
int num,score;
node*link;
};
void main()
{
node*creat(int n);//函数原型声明
void print(node*h);//函数原型声明
node*head=0;//定义链头指针并初始化
head=creat(5);//调用creat函数创建链表
print(head);//调用print函数输出链表
}
node*creat(int n)
{
node*h=0,*p,*q;
int i;
for(i=1;i<=n;i++)
{
q=(node*)malloc(sizeof(node));//分配一个结点空间
scanf("%d%d",&q->num,&q->score);//输入新结点的值
q->link=0;//新结点的指针域置0
if(h==0)
h=q;//第一个结点作为链头结点
else
p->link=q;//新结点添加到链表的末尾
p=q;
}
return h;//返回链头指针
}
void print(node*h)//链表输出函数的定义
{
while(h)//当指针h非空时输出h所指结点的值
{
printf("num=%d\tscore=%d\n",h->num,h->score);
h=h->link;//使h指向下一个结点
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
严蔚敏的《数据结构与算法》多看看,基本的数据结构和基本的算法实现慢慢你就都会了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-12-15
展开全部
使用比较简单,理解原理就比较难。
list<数据类型> 变量名
例子:
list<int> intLst;//定义一个存放整型数据的链表
链表还自带一系列函数,常用的有push_front(),push_back(),pop_front(),pop_back(),erase()等等,使用一下就清楚了
使用链表要学会使用迭代器遍历链表与访问元素
list<数据类型> 变量名
例子:
list<int> intLst;//定义一个存放整型数据的链表
链表还自带一系列函数,常用的有push_front(),push_back(),pop_front(),pop_back(),erase()等等,使用一下就清楚了
使用链表要学会使用迭代器遍历链表与访问元素
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询