单链表的建立

``#include<stdio.h>
#include<stdlib.h>
typedef struct Node *ptrtonode; //为struct Node取别名为ptrtonode,可以直接用类型ptrtonode来定义指针变量
typedef ptrtonode List; //为ptrtonode取别名为List,可以直接用类型List类型来定义指针变量
typedef ptrtonode position;
struct Node //定义单播结点,结点为结构体,包含字符成员data和指针变量成员next
{
char data; //结点的数据域,用来存储一个字符
position next; //结点的指针域,用来指向下一个结点
}a; //定义结构体变量a
经典的结构体建立

position creat()
{
position L; //定义结构体指针变量L,用来指向单链表头部
position p1,p2; //定义结构体指针变量p1,p2,作为临时指针指向结点
char data;
L=(position)malloc(sizeof(a)); //申请一个结点大小的空间,用指针L指向这个空间首地址
p2=L; //p2指针也指向L指的结点
while((data=getchar())!=’#’) //从键盘获取字符存入变量data中,如果从键盘获取的字符不是’#'则循环
// 请在此添加代码,完成链表的初始化
/********** Begin /
{ p1=(position)malloc(sizeof(a));
p1->data=data;
p2->next=p1;
p2=p1;}
/
* End **********/
p2->next=NULL; //p2指向的结点的指针域置空,表示是最后一个结点
return L; //
}在这里插入图片描述
void print(List head) //传入单链表头指针head,完成对单链表的遍历
{
position p;
p=head->next; //临时指针变量p指向单链表的第一个结点
while(p!=NULL)
{
printf("%c",p->data); //获取单链表中p指针指向的结点的数据域的字符并输出

					//p指针指向下一个结点
}
printf("\n");

}在这里插入图片描述.void main()
{
position L=NULL;

printf(“请输入链表节点,以回车结束:\n”);
L=creat(); //调用creat函数,完成单链表的创建
printf(“初始链表为:\n”);
print(L); //调用print函数,完成单链表的遍历
}
**看程序先看main
所以今天的单链表的建立和输出就完成了
**下面有 .c文件想研究的就拿去
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
typedef  struct Node *ptrtonode;	//为struct Node取别名为ptrtonode,可以直接用类型ptrtonode来定义指针变量
typedef  ptrtonode List;			//为ptrtonode取别名为List,可以直接用类型List类型来定义指针变量
typedef  ptrtonode position;
struct Node							//定义单播结点,结点为结构体,包含字符成员data和指针变量成员next
{
	char  data;						//结点的数据域,用来存储一个字符
	position next;					//结点的指针域,用来指向下一个结点
}a;                                 //定义结构体变量a

position  creat()
{
    position L;						//定义结构体指针变量L,用来指向单链表头部
    position p1,p2;					//定义结构体指针变量p1,p2,作为临时指针指向结点
    char data;
    L=(position)malloc(sizeof(a));	//申请一个结点大小的空间,用指针L指向这个空间首地址
    p2=L;							//p2指针也指向L指的结点
    while((data=getchar())!='\#')	//从键盘获取字符存入变量data中,如果从键盘获取的字符不是'\#'则循环
	// 请在此添加代码,完成链表的初始化
   /********** Begin *********/
   { p1=(position)malloc(sizeof(a));
    p1->data=data;
    p2->next=p1;
    p2=p1;}
   /********** End **********/
    p2->next=NULL;						//p2指向的结点的指针域置空,表示是最后一个结点
    return L;							//
}

void print(List head)					//传入单链表头指针head,完成对单链表的遍历
{
	position  p;
	p=head->next;                       //临时指针变量p指向单链表的第一个结点
	while(p!=NULL)
	{
		printf("%c",p->data);			//获取单链表中p指针指向的结点的数据域的字符并输出
		p=p->next;						//p指针指向下一个结点
	}
	printf("\n");
}
void main()
{
    position L=NULL;
    //printf("请输入链表节点,以回车结束:\n");
    L=creat();                          //调用creat函数,完成单链表的创建
	//printf("初始链表为:\n");
    print(L);                           //调用print函数,完成单链表的遍历
}


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值