c++链表怎样实现输入任意个 数
追问:那数字0要怎么添加呢?我想以字母为结束符行不?
追问:那数字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++有什么区别