c语言链表如何正序复制,单链表的正序创建的问题(帮下忙谢谢了)

单链表的正序创建的问题(帮下忙谢谢了)

我写了个逆序的没有问题,,感觉正序的应当简单才行,居然出了问题

真郁闷!!!!

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#define null 0

typedef struct Lnode

{

int date;

struct Lnode *next;

}Node,*LinkList;

void CreatList(LinkList &L,int n);

void print(LinkList &L);

void CreatList(LinkList &L,int n)

{

LinkList s, p=L;

int i;

for(i=0;i

{

s=(LinkList)malloc(sizeof(Node));

if(!s) exit(1);

scanf("%d",&s->date);

s->next=null;

p->next=s;

p=s;

}

}

void print(LinkList &L)

{

LinkList p=L->next;

printf("********************************\n");

while(p)

{

printf("%d ",p->date);

p=p->next;

}

printf("\n********************************\n");

}

int main()

{

int n;

LinkList L;

printf("Please Input how many NOdes do you want:");

scanf("%d",&n);

printf("Please Input the NOdes you want:");

CreatList(L, n);

print(L);

return 0;

}

[此贴子已经被作者于2006-5-17 19:04:34编辑过]

搜索更多相关的解决方案:

单链

----------------解决方案--------------------------------------------------------

怎么还没有人看吗??

----------------解决方案--------------------------------------------------------

你的程序算法是对的,只是要把程序有"&"的全部去掉就对了

----------------解决方案--------------------------------------------------------

#include

#include

#include

typedef struct node

{

char data;

struct node *nextPtr;

}*LinkList, Lnode;

static void CreateList(LinkList *headPtr, LinkList *tailPtr);

static void VisitList(LinkList headPtr);

static void DestroyList(LinkList *headPtr, LinkList *tailPtr);

int main(void)

{

LinkList headPtr = NULL, tailPtr = NULL;

CreateList(&headPtr, &tailPtr);

VisitList(headPtr);

DestroyList(&headPtr, &tailPtr);

getch();

return 0;

}

static void CreateList(LinkList *headPtr, LinkList *tailPtr)

{

char ch;

LinkList newPtr;

printf("Enter create list string: ");

fflush(stdin);

while (1)

{

scanf("%c", &ch);

if (ch == '\n')

{

return ;

}

if ((newPtr = (LinkList)malloc(sizeof(Lnode))) == NULL)

{

exit(1);

}

newPtr -> data = ch;

newPtr -> nextPtr = NULL;

if (*headPtr == NULL)

{

newPtr -> nextPtr = *headPtr;

*headPtr = newPtr;

}

else

{

(*tailPtr) -> nextPtr = newPtr;

}

*tailPtr = newPtr;

}

}

static void VisitList(LinkList headPtr)

{

while (headPtr != NULL)

{

printf("%c", headPtr -> data);

headPtr = headPtr -> nextPtr;

}

printf("\n");

}

static void DestroyList(LinkList *headPtr, LinkList *tailPtr)

{

LinkList tempPtr;

while (*headPtr != NULL)

{

tempPtr = *headPtr;

*headPtr = (*headPtr) -> nextPtr;

free(tempPtr);

}

*headPtr = NULL;

*tailPtr = NULL;

}

----------------解决方案--------------------------------------------------------

以下是引用韦应贵在2006-5-17 20:19:00的发言:

你的程序算法是对的,只是要把程序有"&"的全部去掉就对了

没错...你的typedef定义太乱了..在函数中的L都要去掉&

或者这样.:

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#define null 0

typedef struct Lnode

{

int date;

struct Lnode *next;

}Node;

void CreatList(Node *L,int n)

{

Node *s, *p=L;

int i;

for(i=0;i

{

s=(Node *)malloc(sizeof(Node));

if(!s) exit(1);

scanf("%d",&s->date);

s->next=null;

p->next=s;

p=s;

}

}

void print(Node *L)

{

Node *p=L->next;

printf("********************************\n");

while(p)

{

printf("%d ",p->date);

p=p->next;

}

printf("\n********************************\n");

}

int main()

{

int n;

Node *L;

printf("Please Input how many NOdes do you want:");

scanf("%d",&n);

printf("Please Input the NOdes you want:");

CreatList(L, n);

print(L);

getch();

}

可能更明朗一点~!

----------------解决方案--------------------------------------------------------

4楼的兄弟,我好佩服你啊

这么快就能写一个出来

不过还是请你看下我的程序好不好

看别人的难点,不过我还是想不明白怎么出错了啊

----------------解决方案--------------------------------------------------------

5楼的程序

我在VC++中运行不了啊

----------------解决方案--------------------------------------------------------

以下是引用gaga在2006-5-17 20:31:00的发言:

4楼的兄弟,我好佩服你啊

这么快就能写一个出来

不过还是请你看下我的程序好不好

看别人的难点,不过我还是想不明白怎么出错了啊

2楼告诉你了..在函数中 L前面&的问题..去掉就对了!

----------------解决方案--------------------------------------------------------

我的WIN-TC..C-Free可能也可以..没试.

VC++没用过.不清楚...

还有一点..你的程序没有释放..自己加吧..!

----------------解决方案--------------------------------------------------------

不好意思

刚才电脑有点问题

我对指针这块不是很专长,就用了书上的引用参数;可能各个编绎器差别大吧

----------------解决方案--------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值