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

c语言写数据结构的链表代码高手进来

qq8801103 发布于 2010-03-27 21:55, 865 次点击
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
   char data;
   struct node *next;
}ListNode;
ListNode *createlist()
{
  char ch;
  ListNode *head=(ListNode *)malloc(sizeof(ListNode));
  ListNode *s,*r=head;
  printf("shurujiedianzhi:");
  ch=getchar();
  while (ch!='\n')
  {
     s=(ListNode *)malloc(sizeof(ListNode));
     s->data=ch;
     r->next=s;r=s;
     ch=getchar();
  }
  r->next=NULL;
  return head;
}
void prin(ListNode *head)
{
   ListNode *p=head->next;
   if(p==NULL)
      printf("kongbiao\n");
   else
   {
      while(p!=NULL)
      {
     printf("%c ",p->data);
     p=p->next;
      }
      printf("\n");
   }
}
ListNode *getnode(ListNode *head,int i)
{
  int j=0;
  ListNode *p;
  p=head;
  while(p->next!=NULL&&j<i)
  {
     p=p->next;
     j++;
  }
  if(p!=NULL)
    return p;
  else
    return NULL;
;
}
void insertnode(ListNode *head,char x,int i)
{
  ListNode *p,*s;
  s=(ListNode *)malloc(sizeof(ListNode));
  s->data=x;
  if(i==1)
  {
    s->next=head->next;
    head->next=s;
  }
  else
  {
    p=getnode(head,i-1);
    if(p==NULL)
    {
       printf("iquzhiyoucuo\n");
       exit(0);
    }
    s->next=p->next;
    p->next=s;
  }

}

ListNode *p;
main()
{
   int i;
   char a;
   int  b;
scanf("%d",&i);
  switch(i)
{case 1:printf("n=");
        p=createlist();
        prin(p);
        break;
 case 2:printf("shurucharudeweizhi:")
        scanf("%c,%d",&a,&b);
        insertnode(p,a,b);
        print(p);break;
 default:printf("ERROR!Try again!\n\n");
}
}

哪里错了
6 回复
#2
apull2010-03-27 23:45
case 2:printf("shurucharudeweizhi:")  缺少分号。

print(p); print没有定义,前面写成prin了

scanf("%d",&i);
getchar();   //scanf后面要用getchar跳过输入的回车符。
#3
hahayezhe2010-03-28 08:52
如果用C++写 就没有这么问题了getline()
#4
qq88011032010-03-28 21:53
能把代码写全吗 谢谢
#5
hahayezhe2010-03-29 08:34
2楼已经把错误全指出来了 最多还有个int main() 准备写法
#6
qq88011032010-03-29 16:09
我 用 getchar还 是跳不过回车啊
1