当前位置:编程学习 > C/C++ >>

C语言的一个链表问题

#include<stdio.h>

#include"stdlib.h"

typedef struct node

{

int data;

struct node *next;}SLIST;

SLIST *creatlist();

void printlist(SLIST *h);

SLIST *creatlist()

{

SLIST *start,*this,*new;

int i;

new=(SLIST *)malloc(sizeof(SLIST));

start=NULL;

for(i=0;i<10;i++)

{

new=(SLIST *)malloc(sizeof(SLIST));

if(start==NULL)

{start=new;}

else{

this=start;

while(this->next!=NULL) this=this->next;

this->next=new; }

````````}

```````}

````````

这段话是什么意思啊,请高手讲详细一点,如果好的话可以接着加分,谢谢

追问:先已经对start赋值NULL了,怎么在for循环里面又有一个if(start==NULL)

我想不通这点

答案:#include<stdio.h>

#include"stdlib.h"

typedef struct node{ //定义了一个结构体类型数据,next指针指向链表的下一个结点

int data;

struct node *next;

}SLIST;

SLIST *creatlist(); //声明创建链表函数

void printlist(SLIST *h);//声明打印链表函数

SLIST *creatlist()//链表函数实现

{

SLIST *start,*this,*new; //定义三个指针:开始、当前、新的结点,

//指针都应该赋值为空,否则不应该使用野指针!!!

int i;

new=(SLIST *)malloc(sizeof(SLIST)); //此句不要,for里面已经有了

start=NULL;//将开始指针指向空,也就是赋值为NULL,this、new也应该这样做。这句是赋值语句

for(i=0;i<10;i++)//循环向链表插入10个元素

{

new=(SLIST *)malloc(sizeof(SLIST));//为新结点的指针new申请内存空间

if(start==NULL)//如果start为空,说明链表里面还没有结点,是一个空链表。这句是判断语句

{

start=new; //直接将开始结点的指针指向新节点就可以了。

}

else{ //程序到这里说明链表中已存在结点

this=start; //把当前节点的指针this指向链表开头start

while(this->next!=NULL) //将当前节点的指针移动到链表结尾,指向最后一个结点,

this=this->next; //当当前节点的下一个指针为空,说明已经到了最后一个结点

this->next=new; //把当前节点的指向下一个结点的指针指向新建立的结点。

}

````````}

```````}

````````

QQ 343469394

#include<stdio.h>

#include"stdlib.h"

typedef struct node

{

int data;

struct node *next;}SLIST;//定义结构体结构

SLIST *creatlist();//声明一个SLIST结构体指针函数

void printlist(SLIST *h);//这里声明一个输出连表的函数

SLIST *creatlist()//函数定义部分

{

SLIST *start,*this,*new;//定义3个结构体SLIST指针

int i;

new=(SLIST *)malloc(sizeof(SLIST));//为new指针开辟存储空间

start=NULL;//结构体SLIST赋NULL值

for(i=0;i<10;i++)/用for循环建立10个结点的连表

{

new=(SLIST *)malloc(sizeof(SLIST));//这里位置应该放在后面才对

if(start==NULL)//如果start指针空让start指向新开辟的连表首地址位置

{start=new;}

else{

this=start;//否则this指针空指向start

while(this->next!=NULL) this=this->next;//用this指针指向新开辟的空间

this->next=new; }

````````}

```````}

````````

好了基本就这意思,不过你程序有不少地方写错了,要是想问详细就先采纳了在加我531351006

哇 写代码的人是不是想用C语言的结构体来模仿C++的类结构啊

这段代码是个典型的C语言接口思想,如果想在这方面有更多的了解可以加我1060385007

上一个:C语言 可变参数列表
下一个:c语言指针简单教程

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,