当前位置: 代码迷 >> C语言 >> 单链表的正序创建的问题(帮下忙谢谢了)
  详细解决方案

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

热度:673   发布时间:2006-05-17 18:55:00.0
单链表的正序创建的问题(帮下忙谢谢了)

我写了个逆序的没有问题,,感觉正序的应当简单才行,居然出了问题
真郁闷!!!!
#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<n;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编辑过]

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

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


怎么还没有人看吗??


----------------解决方案--------------------------------------------------------
你的程序算法是对的,只是要把程序有"&amp;"的全部去掉就对了
----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

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<n;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++没用过.不清楚...
还有一点..你的程序没有释放..自己加吧..!

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

不好意思
刚才电脑有点问题
我对指针这块不是很专长,就用了书上的引用参数;可能各个编绎器差别大吧


----------------解决方案--------------------------------------------------------
  相关解决方案