数据结构链表简单操作,小弟我到底错在哪了
数据结构链表简单操作,我到底错在哪了
很简单的链表操作,我用的C语言,我想应该不是参数按值传递的错误吧,希望大家看看,我到底错在哪里?
vc6,运行时显示个10,就奔溃了!谢谢。
------解决思路----------------------
很简单的链表操作,我用的C语言,我想应该不是参数按值传递的错误吧,希望大家看看,我到底错在哪里?
vc6,运行时显示个10,就奔溃了!谢谢。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define INFEASIBLE -1
typedef int status;
typedef int elemType;
typedef struct linkNode
{
elemType date;
struct linkNode *next;
} linkNode,*linkList;
void initList(linkList L)
{
L = (linkList)malloc(sizeof(linkNode));
if (!L)
exit(OVERFLOW);
L->next = NULL;
}
status listInsert(linkList L, int i, elemType e)
{
int j = 0;
linkList p = L, q;
while (p != NULL && j < i - 1)
{
j++;
p = p->next;
}
if (!p || i < 1)
return ERROR;
q = (linkList)malloc(sizeof(linkNode));
if (!q)
exit(OVERFLOW);
q->date = e;
q->next = p->next;
p->next = q;
return OK;
}
void traverseList(linkList L)
{
linkList p = L->next;
while (p)
{
printf("%d\t",p->date);
p = p->next;
}
printf("\n");
}
void main()
{
linkNode La;
initList(&La);
listInsert(&La,1, 10);
traverseList(&La);
printf("hah");
}
------解决思路----------------------
void main()
{
linkNode La; //这定义了结构体已经分配了空间
La.next = NULL;
//initList(&La);
listInsert(&La,1, 10);
traverseList(&La);
printf("hah");
}
或者
void initList(linkList *L)
{
*L = (linkList)malloc(sizeof(linkNode));
if (!L)
exit(OVERFLOW);
(*L)->next = NULL;
}
void main()
{
linkList La;
initList(&La);
listInsert(La,1, 10);
traverseList(La);
printf("hah");
}