C语言,链队列问题为什么获取不了头结点,下面的代码求网友指错?

Python010

C语言,链队列问题为什么获取不了头结点,下面的代码求网友指错?,第1张

建议你enter()函数重写吧,逻辑错误太多。

链表必须自己设置一个头结点的,一般在第一个元素插入的时候定义。

此后不能再修改,知道链表删除为止。

插入的时候,取一个指针,读头结点,找到插入位置,再插入。

不能使用头结点寻找,往下递归。

即:listhead = listhead->next 这种用法错误。

使用: p = listhead

p = p->next

头结点,就是listhead

//定义队列结构体

typedef struct Qnode

{

int data

struct Qnode *next

} Queue , *QueuePtr

typedef struct

{

QueuePtr front

QueuePtr rear

} linkQnode

//创建一个队列

initQueue (linkQnode *q)

{

q ->front = q ->rear = (QueuePtr) malloc (sizeof (Queue))

if (!q ->front) exit (0)

q ->front ->next = NULL

}

//入队列

EnterQueue (linkQnode *q , int item)

{

QueuePtr p

p = (QueuePtr) malloc (sizeof (Queue))

if (!p) exit (0)

p ->data = item

p ->next = NULL

q ->rear ->next = p

q ->rear = p

}

//出队列

DelQueue (linkQnode *q , int *item)

{

QueuePtr p

if (q ->front = q ->rear) return

p = q ->front ->next

*item = p ->data

q ->front ->next = p ->next

if (q ->rear == p)

q ->rear = q ->front

free (p)

}

#define

MAXSIZE

100

typedef

int

datatype

typedef

struct{

datatype

a[MAXSIZE]

int

front

int

rear

}seqqueue

/*队列置空*/

void

initseqqueue(seqqueue

*p)

{

p->front=p->rear=0

}

/*判断队列是否这空*/

int

isemptyseqque(seqqueue

*p)

{

return(p->front==p->rear?1:0)

}

/*输出队列中的元素*/

void

outputseqqueue(seqqueue

*p)

{

int

i

if(isemptyseqqueue(p)){printf("\nThe

sequece

queue

is

empty\n")exit(1)}

for(i=p->fronti<p->reari++)

printf("%5d",p->a[i])

}

/*取得队列首结点值*/

datatype

getfirstseqqueue(seqqueue

*p)

{

if(isemptyseqqueue(p)){printf("\nThe

sequece

queue

is

empty\n")exit(1)}

return

p->a[p->front]

}

/*给队列插入一个结点*/

void

insertseqqueue(seqqueue

*p)

{

int

i

if(p->rear==MAXSIZE){printf("\nThe

sequece

queue

is

full\n")exit(1)}

p->a[p->rear]=x

p->rear++

}

/*删除队列中的第一个结点*/

void

delseqqueue(seqqueue

*p)

{

if(isemptyseqqueue(p)){printf("\nThe

sequece

queue

is

empty\n")exit(1)}

p->front++

}

自己再编一下main()函数应该差不多啦