注册 登录
编程论坛 C语言论坛

单链表的输出怎么弄

average 发布于 2020-11-18 21:27, 2085 次点击
#include <stdio.h>
#include <stdlib.h>

//结点类型定义
typedef struct Node
{
int data;//数据域
struct Node *next;//指针域
}Node,*LinkList; //LinkList与Node*同为结构指针类型
 
//主函数
int main()
{
void InitList(LinkList *L);
void CreateFromHead(LinkList L);
LinkList L; //头指针
//Node* p;//头结点
InitList(&L);
CreateFromHead(L);
}


//初始化
 void InitList(LinkList *L)//L为单链表的头指针
{
*L=(LinkList)malloc(sizeof(Node));//动态申请空间
(*L)->next=NULL;                                             
}


 int print(LinkList L)
 {
    Node *s;
     if (s->next!=NULL)
     {
printf(" ",);
     }
 
 return 0;
 }

//用头插法建立单链表
void CreateFromHead(LinkList L)
{
Node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else flag=0;
}
}
9 回复
#2
do8do8do82020-11-18 22:00
int print(LinkList L)
 {
    Node *s = L ;/***************************/
    while (s->next!=NULL)/************************/
     {
printf("%d\n",s->data);/************************/
      s = s->next;/******************************/
     }
 
 return 0;
 }
#3
average2020-11-18 22:11
#include <stdio.h>
#include <stdlib.h>

//结点类型定义
typedef struct Node
{
int data;//数据域
struct Node *next;//指针域
}Node,*LinkList; //LinkList与Node*同为结构指针类型
 
//主函数
int main()
{
int print(LinkList L);
void InitList(LinkList *L);
void CreateFromHead(LinkList L);
LinkList L; //头指针
//Node* p;//头结点
InitList(&L);
CreateFromHead(L);
print(&L);
}


//初始化
 void InitList(LinkList *L)//L为单链表的头指针
{
*L=(LinkList)malloc(sizeof(Node));//动态申请空间
(*L)->next=NULL;                                             
}


int print(LinkList L)
 {
    Node *s = L ;/***************************/
    while (s->next!=NULL)/************************/
     {
printf("%d\n",s->data);/************************/
      s = s->next;/******************************/
     }
 
 return 0;
 }

//用头插法建立单链表
void CreateFromHead(LinkList L)
{
Node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else flag=0;
}
}
只有本站会员才能查看附件,请 登录
#4
average2020-11-18 22:11
回复 2楼 do8do8do8
为什么还是没法输出,是不是我调用错了?
#5
纳多多大魔王2020-11-18 22:22
回复 4楼 average
#6
林月儿2020-11-18 22:45
//初始化
 void InitList(LinkList *L)//L为单链表的头指针
{
*L=(LinkList)malloc(sizeof(Node));//动态申请空间
L->next=NULL;                                          
}

int print(LinkList L)
 {
    Node *s = L->next ;/***************************/
    while (s!=NULL)/************************/
     {
printf("%d\n",s->data);/************************/
      s = s->next;/******************************/
     }
 
 return 0;
 }

#7
林月儿2020-11-18 22:50
应该还有问题,没试过
#8
average2020-11-18 22:57
回复 7楼 林月儿
好,我运行一下试试
#9
林月儿2020-11-18 23:11
#include <stdio.h>
#include <stdlib.h>

//结点类型定义
typedef struct Node
{
int data;//数据域
struct Node *next;//指针域
}Node;
 
//主函数
int main()
{
int print(Node *L);
void InitList();
void CreateFromHead(Node*L);
Node* L=InitList();
CreateFromHead(L);
print(L);
}


//初始化
 Node* InitList()//L为单链表的头指针
{
Node *L=(Node*)malloc(sizeof(Node));//动态申请空间
L->next=NULL;
return L;                                       
}


int print(Node *L)
 {
    Node *s = L->next ;
    while (s!=NULL)
     {
printf("%d\n",s->data);
      s = s->next;/********************/
     }
 return 0;
 }

//用头插法建立单链表
void CreateFromHead(Node *L)
{
Node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else flag=0;
}
}

我改了下,嗯,注意三点。
数据类型,指针的箭头指向访问,和结构体对象访问要小心一点,尽量不要交替出现
传参分值传递和引用传递,你这边可能,我是说可能犯了这个问题,可以百度一下
遍历前,搞清楚数据结构,这里的链表第一个节点没有存放数据,故要跳过再处理

[此贴子已经被作者于2020-11-18 23:14编辑过]

#10
酷工俊客2020-11-22 12:16
单链表没写对啊
1