C语言用typedef定义一个单向链表的节点的数据结构,请大侠看看我这种方式错在哪里?如何修改? 5

#include<stdio.h>#include<stdlib.h>typedefstructSTU{longnum;floatscore;structSTU*next... #include<stdio.h>
#include<stdlib.h>

typedef struct STU{
long num;
float score;
struct STU *next;
}stu;

int n;

stu *creat(void) //创建单向链表 error C2275: 'stu' : illegal use of this type as an expression
{
n =0;
stu *p1;
stu *p2;
stu *head;
p1 = p2 = (stu *)malloc(sizeof(stu));
head = NULL;

scanf( "%ld,%5.1f",&p1->num,&p1->score );
while( p1->num != 0 )
{
n = n+1;

if( n = 1 )
head = p1;
else
p2->next =p1;
p2 = p1;
p1 = (stu *)malloc(sizeof(stu));
scanf( "%ld,%5.1f",&p1->num,&p1->score );
}
p2 ->next = NULL;
return head;

}
展开
 我来答
侦探章邯
2015-05-28 · TA获得超过579个赞
知道小有建树答主
回答量:830
采纳率:0%
帮助的人:598万
展开全部
#include "stdlib.h"
#include "stdio.h"

//链表的类型定义
typedef struct node
{
 int data;    //值域
 struct node *link; //指针域                                                   
}*PNode,*LinkList;
//typedef struct node *PNode;
//typedef struct node *LinkList;

//创建空链表
LinkList createNullist_link(void)
{
 LinkList list=(LinkList)malloc(sizeof(struct node));//申请表头结点空间
 if(list!=NULL) list->link=NULL;
 else printf("Out of space!\n");//创建失败
 return(list);
}

//判断空链表
int isNullist_linkq(LinkList list)
{
 return(list->link==NULL);
}

//在单链表中求某元素的存储位置
PNode locate_link(LinkList list,int x)
{//在list 带有头结点的单链表中找第一个值为x的结点存储位置
 PNode p;
 if(list->link==NULL)  return(NULL);
 p=list->link;
 while(p!=NULL && p->data!=x) p=p->link;
 return(p);
}

// 单链表的插入
int  insertPost_link(LinkList list,PNode p,int x)
{//在list 带有头结点的单链表中,p所指结点后面插入元素x
 PNode q=(PNode )malloc(sizeof(struct node));
 if(q==NULL)  
 {
  printf("Out of space!!!\n");
  return(0);
 }
 else
 {
  q->data=x;
  q->link=p->link;
  p->link=q;
  return(1);
 }
}

// 在单链表求p所指结点的前驱结点
PNode  locatePre_link(LinkList list,PNode p)
{
 PNode p1;
 if(list->link==NULL)  return(NULL);
 while(p1!=NULL && p1->link!=p) p1=p1->link;
 return(p1);
}

// 单链表的删除
int  insertPost_link(LinkList list,int x)
{//在list 带有头结点的单链表中删除第一个值为x的结点
 PNode p,q ;
 p=list;
 if(p->link==NULL)  return(0);
 while(p->link!=NULL && p->link->data!=x)
  p=p->link;//找值为x的结点的前驱结点的存储位置
 if(p->link==NULL) //没找到值为x的结点
 {
  printf("Not exist!\n");
  return(0);
 }
 else
 {
  q=p->link;
  p->link=q->link;
  free(q);
  return(1);
 }
}

void main()
{
 int i,x;
 PNode p;
 LinkList list1;
 list1=createNullist_link();
 if(list1!=NULL)
  printf("创建空表成功!\n");
 p=list1;
 for(i=0;i<5;i++)
 {
  printf("请输入第 %d 个结点的值:",i+1);
  scanf("%d",&x);
        insertPost_link(list1,p,x);
  p=p->link;
 }
 printf("\n"); 
 p=list1->link;
 while(p!=NULL)
 {
  if(p->link==NULL)
   printf("%d",p->data);
  else
   printf("%d->",p->data);
  p=p->link;
 }
 printf("\n");
 printf("请输入删除结点的值:",i+1);
  scanf("%d",&x);
 insertPost_link(list1,x);
  printf("\n"); 
 p=list1->link;
 while(p!=NULL)
 {
  if(p->link==NULL)
   printf("%d",p->data);
  else
   printf("%d->",p->data);
  p=p->link;
 }

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式