注册 登录
编程论坛 数据结构与算法

C语言循环链表的定义,头节点动态申请空间,为什么总是报错!

想世界 发布于 2014-06-08 22:01, 993 次点击
#include<stadio.h>
#include<stalib.h>
#include<malloc.h>

typedef struct node
 {
    int data;
    struct node *next;
}*head,*p,*q;


int people(int n)
   {
     int k;
     *head=(node*)malloc(sizeof(struct node));  // 这句话报错。
     head->data=1;
     p=head;
     for(k=2;k<=n;k++)
        {
          q=(node*)malloc(sizeof(struct node));
          q->data=k;
          p->next=q;
          }
      q->next=head;
     }

int ysf(int n;int m;int *p)
   {
     int i;
     for(i=1,i<=n);i++)
        {
          for(j=1;j<m-1;j++)
            {
              p=p->next;
             }
           q=p->netx;
           p->next=q->next;
           printf("%3d",q->data);
         }
    }

int main()
    {
      int n,m;
      printf("请输入n和m:");
      scanf("%3d,%3d",n,m);
      people(n);
      ysf(n,m,*head);
     paused("system");
     }
}
编译时总是报错:
 syntax error before "people"
 In function `people':
syntax error before "head"
 syntax error before '=' token
 syntax error before '->' token
等等。。。。。

感谢~~
5 回复
#2
azzbcc2014-06-09 03:31
你typedef理解错了
#3
想世界2014-06-17 12:03
请问,什么是tepydef理解错了?应该怎么理解?具体代码应该怎么写?
#4
想世界2014-06-19 09:29
回复 2 楼 azzbcc
请问,typedef 应该怎么理解?具体代码应该怎么改呢
#5
azzbcc2014-06-19 14:31
去掉typedef

你百度先
#6
zxgcc02102014-07-06 19:44
在你的程序里,使用了typedef,从而使得*head是一个结构体名,而不是一个结构体变量,你不能给一个结构体名进行赋值。
   你这样写试试:
   typedef struct node
{
    int data;
    struct node *next;
} Node;

int people(int n)
   {
     int k;
     Node *head,*p,*q;//声明结构体变量
     *head=(node*)malloc(sizeof(Node));  // 看看改成这样还报错不?
     head->data=1;
     p=head;
1