我写了个逆序的没有问题,,感觉正序的应当简单才行,居然出了问题
真郁闷!!!!
#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编辑过]
----------------解决方案--------------------------------------------------------
怎么还没有人看吗??
----------------解决方案--------------------------------------------------------
你的程序算法是对的,只是要把程序有"&"的全部去掉就对了
----------------解决方案--------------------------------------------------------
#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;
}
----------------解决方案--------------------------------------------------------
你的程序算法是对的,只是要把程序有"&"的全部去掉就对了
没错...你的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++中运行不了啊
----------------解决方案--------------------------------------------------------
4楼的兄弟,我好佩服你啊
这么快就能写一个出来
不过还是请你看下我的程序好不好
看别人的难点,不过我还是想不明白怎么出错了啊
2楼告诉你了..在函数中 L前面&的问题..去掉就对了!
----------------解决方案--------------------------------------------------------
我的WIN-TC..C-Free可能也可以..没试.
VC++没用过.不清楚...
还有一点..你的程序没有释放..自己加吧..!
----------------解决方案--------------------------------------------------------
不好意思
刚才电脑有点问题
我对指针这块不是很专长,就用了书上的引用参数;可能各个编绎器差别大吧
----------------解决方案--------------------------------------------------------