用C++语言的类的单链表如何实现

小弟学了C++和数据结构,能分别写简单的程序和链表,大虾们能不能写个简单的单链表程序让我研究研究,能有注释就更好了,跪谢大家了要有链表的建立,链表元素的插入,删除,输出... 小弟学了C++和数据结构,能分别写简单的程序和链表,大虾们能不能写个简单的单链表程序让我研究研究,能有注释就更好了,跪谢大家了
要有链表的建立,链表元素的插入,删除,输出
展开
 我来答
匿名用户
推荐于2017-09-22
展开全部
所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:

  1、数据域:用来存储本身数据

  2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。

  例:

typedef struct node
{
 char name[20];
 struct node *link;
}stud;

  这样就定义了一个单链表的结构,其中char name[20]是一个用来存储姓名的字符型数组,指针*link是一个用来存储其直接后继的指针。

  定义好了链表的结构之后,只要在程序运行的时候在数据域中存储适当的数据,如有后继结点,则把链域指向其直接后继,若没有,则置为NULL。

单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。
注意:
 链表由头指针唯一确定,单链表可以用头指针的名字来命名。
  下面就来看一个建立带表头(若未说明,以下所指链表均带表头)的单链表的完整程序。

#include <stdio.h>
#include <malloc.h>
#define N 10
typedef struct node
{
 char name[20];
 struct node *link;
}stud;
stud * creat(int n)
{
 stud *p,*h,*s;
 int i;
 if((h=(stud *)malloc(sizeof(stud)))==NULL)
 {
  printf("不能分配内存空间!");
  exit(0);
 }
 h->name[0]='\0';
 h->link=NULL;
 p=h;
 for(i=0;i<n;i++)
 {
  if((s= (stud *) malloc(sizeof(stud)))==NULL)
  {
   printf("不能分配内存空间!");
   exit(0);
  }
  p->link=s;
  printf("请输入第%d个人的姓名",i+1);
  scanf("%s",s->name);
  s->link=NULL;
  p=s;
 }
 return(h);
}
main()
{
 int number;
 stud *head;
 number=N;
 head=creat(number);
}
追问
能注释一下吗?指针小弟学的不太好,有其他的方法实现吗?
追答
链表就是用指针来实现的,用数组只能模拟链表,不是真正的链表
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式