- #include<iostream>
- #include<stdlib.h>
- using namespace std;
- //定义链表的结构
- typedef struct node
- { char data;
- struct node *next;
- } node;
- node *p,*q,*head; //一般需要3个指针变量
- int n ; // 数据元素的个数
- int m=sizeof(node); /*结构类型定义好之后,每个变量的长度就固定了,m求一次即可*/
- void build() //字母链表的生成。需要一个个字母链入
- { int i;
- p=(node*)malloc(m); //为p指针申请一个新空间,m=sizeof(node) 前面已求出
- head=p; //为头指针赋新空间的初值
- for( i=0; i<25; i++) //因尾结点要特殊处理,故i≠26
- { p->data=i+'a'; //第一个结点值赋值为字符a
- p->next=(node*)malloc(m); //p指针指向一个新申请的空间地址
- p=p->next; //p指针移动到后一个空间结点地址
- }
- p->data=i+'a'; //i=25的时候,循环已经退出,因此p指针此时指向是最后一个节点
- p->next=NULL; //单链表表尾结点的指针域要置空!因此最后一个元素要单独处理,
- }
- void print() /*链表的输出*/
- {
- p=head;
- while (p) //当指针不空时循环
- { cout<<p->data<<endl;
- p=p->next; //“顺藤摸瓜”让指针不断移动
- }
- }
- void main()
- { build();
- print();
- }
- //该片段来自于http://www.codesnippet.cn/detail/2210201410752.html
来源: http://www.codesnippet.cn/detail/2210201410752.html