当前位置:编程学习 > C/C++ >>

c++链表怎样实现输入任意个 数

追问:那数字0要怎么添加呢?我想以字母为结束符行不?

答案:链表实现支持任意个数的输入是很简单的,之后设置一个标志结束符。就可以在输入这个结束符之前输入任意个数据!

下面给你一个简单的实例吧!(注意一下建表函数里的加粗部分)代码:

#include<iostream.h>
typedef int datatype;   //结点数据类型,假设为 int
typedef struct node * pointer;     // 结点数据类型
struct node{
 int number;
 datatype data;
 pointer next;
};
typedef pointer iklist;  //单链表类型,即头指针类型

//初始化
iklist initlist(){
 pointer head;
 head=new node;
 head->next=NULL;
 return head;
}

//建表
iklist creat()
{
 pointer head,rear,s;
 int ch,num=1;
 head=new node;     //生成头结点
 rear=head;         //尾指针初值指向头结点
 cout<<"请输入链表的数据(以输入0结束):\n";
 while(cin>>ch,ch!=0){ // 读入结点值,并检测是否为结束符
  s=new node;    //生成新结点
  s->data=ch;
  s->number=num;
  num++;
  rear->next=s;     //非空表,新结点 *s 插入到尾指针 *rear 之后
  rear=s;        //尾指针 rear 指向新的表尾;
 }
 rear->next=NULL;   //尾结点的后继指针置空
 return head;       //返回单链表头指针
}

//显示链表
void show(iklist head){
 head=head->next;
 for(int i=1;head!=NULL;i++){
  cout<<"number: "<<i<<" data: "<<head->data<<endl;
  head=head->next; 
 }
}


int main()
{
 iklist L;
 L=initlist();
 L=creat();
 if(L!=NULL)
  cout<<"链表已建成!\n";
 else
  cout<<"链表建立失败\n";
 cout<<"显示链表:\n";
 show(L);
 return 0;
}

演示如下:

 

用一个while循环来创建,给一个结束条件就可以了,最后一个节点要delete掉,创建完毕要给尾部赋值NULL

#include<iostream.h>

//#include<string.h>

#include<stdlib.h>

typedef struct

 {

  char num[5];

 }DataType;

 typedef struct node

 { DataType data;

   struct node *next; 

 }ListNode;

 typedef ListNode *LinkList;

void main()

{ LinkList head=(ListNode*)malloc(sizeof(ListNode));

ListNode *rear;

rear=head;

ListNode *p;

p=(ListNode*)malloc(sizeof(ListNode));

cin>>p->data.num;

rear->next=p;

rear=p;

 rear->next=NULL;

cout<<p->data.num<<endl;

}

上一个:C++与Jave到底哪一个好?
下一个:C#与C++有什么区别

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,