单链表(一):如何实现单链表的创建、测长、遍历
2015-10-20 10:20
369 查看
示例代码如下:
测试结果如下图:
#include<iostream> using namespace std; ///单链表结构体:结点 typedef struct student { int data; //结点中的数据 struct student *next; //指向链表下一个结点的指针 }node; node *head; //头结点指针 ///建立单链表 void *create() { node *p,*s; //增加结点的位置指针、要增加结点的指针 int x,cycle=1; //x是结点中的数据,若为0代表创建结束;cycle是循环控制变量 head=(node*)malloc(sizeof(node)); //动态分配,建立头节点 p=head; while(cycle) { printf("Please input the data:"); scanf("%d",&x); if(x!=0) { s=(node*)malloc(sizeof(node)); //动态分配,每次新建一个节点 s->data=x; //将数据存入该结点 // printf("%d\n",s->data); //查看该结点中的数据是否正确 p->next=s; //连接头指针与当前结点 p=s; //并将头指针指向当前结点的指针,即下一个结点的地址 } else { cycle=0; } } p->next=NULL; //最后一个结点为空指针(必须) // head=head->next; //创建完毕单链表,头结点指针回去 // printf("\n yyy %d",head->data); //打印第一个结点中的数据,用于验证 return head; //返回根结点 } ///遍历单链表(单链表打印),同时测长 //注:链表无法从反方向进行遍历 void traverse(node *head) { node *p; int index=0; if(head->next==NULL) { printf("Link is empty!\n"); return; } p=head->next; while(p!=NULL)//遍历链表 { printf("The %dth node is:%d\n",++index,p->data);//打印元素,亦可计算链表长度(index) p=p->next;//进入下一个结点 } printf("\n该链表长度为:%d\n\n",index); } int main() { cout<<"/***** 单链表的创建 *****/"<<endl; create(); //单链表的创建 cout<<endl<<"/***** 单链表的遍历与测长 *****/"<<endl; traverse(head); //单链表的遍历与测长 return 0; }
测试结果如下图:
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#定义并实现单链表实例解析
- C语言实现单链表逆序与逆序输出实例
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++实现简单的学生管理系统
- C语言单链表常见操作汇总
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- C数据结构之单链表详细示例分析
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- C++中单链表的建立与基本操作
- C语言单循环链表的表示与实现实例详解
- 深入单链表的快速排序详解
- C++实现的链表类实例
- PHP小教程之实现链表
- C语言双向链表的表示与实现实例详解