c++链表怎么用啊?

 我来答
千锋教育
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;
  }
tattackor
2015-10-31 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:890万
展开全部

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指向下一个结点
 }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘逸大陆
2018-10-06 · TA获得超过255个赞
知道答主
回答量:142
采纳率:100%
帮助的人:59.4万
展开全部
严蔚敏的《数据结构与算法》多看看,基本的数据结构和基本的算法实现慢慢你就都会了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-12-15
展开全部
使用比较简单,理解原理就比较难。
list<数据类型> 变量名
例子:
list<int> intLst;//定义一个存放整型数据的链表
链表还自带一系列函数,常用的有push_front(),push_back(),pop_front(),pop_back(),erase()等等,使用一下就清楚了
使用链表要学会使用迭代器遍历链表与访问元素
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友995f2ea
2012-04-25 · TA获得超过113个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:253万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式