单链表建立c++实现

来源:互联网 发布:小米4支持4g网络吗 编辑:程序博客网 时间:2024/05/19 17:59

学C++,第一编写链表程序。

首先是链表节点的建立,分为指针域和数据域,程序建立如下:

typedef struct Data{string name;int age;};typedef struct list{Data data;struct list *next;};

这里定义了链表的数据域为结构体数据,包含姓名和年龄。指针域包含指向下一个节点的指针next。

输入节点数据,创建链表。程序如下:

list *creatList(list *head,Data data){list *node,*temp;node=new list;          //给新节点开辟内存 node->data=data;        //节点赋值并指向NULL,作为末节点 node->next=NULL;if(head == NULL)            //当链表是空表的时候           {              head = node;              return head;          }  temp=head;while(temp->next!=NULL)  //指向尾节点,并在尾节点添加一节点node {temp=temp->next;}temp->next=node;return head; }
创建后,对链表进行顺序显示,程序代码如下:

int lenList(list *head)//  链表的测长 {int n=0;list *p;p=head;while(p!=NULL){p=p->next;n++;}return (n);}void display(list *head)//链表的显示 {list *temp;Data data;int n;temp=head;cout<<"链表的长度为:";n=lenList(head); cout<<n<<endl;while(temp)  //链表内容的显示 {data=temp->data;cout<<data.name<<" "<<data.age<<endl;temp=temp->next;}}
显示时,先对链表遍历测试其长度。

主函数如下:

int main(){list *node,*head=NULL;Data data;int k;string name;int age; cout<<"输入数据,名字,年龄:(以输入年龄0表示结束)"<<endl; while(1) {cin>>data.name>>data.age;if(data.age==0)break;head=creatList(head,data);//这里注意一定要返回头结点}display(head);}
运行结果如下:


0 0
原创粉丝点击