问题描述
- 一个数据结构 链表的问题
-
#include
#include
#include
typedef int ElemType;
typedef struct Node{
int data;
struct Node *next;
}NODE,*PNODE;
int main(void){
PNODE Head=NULL;//定义初始头结点
Head=creat_list();//初始建立链表
traversal_list(Head);//遍历输出链表
int len=length_list(Head);//计算链表长度
printf("输出链表的长度:n");
sort_list(Head);//排序操作
traversal_list(Head);
insert_list(Head,3,2);//插入操作
traversal_list(Head);
delete_list(Head,3,2);//删除操作
traversal_list(Head);
return 0;}
PNODE creat_list(void);
void traversal_list(PNODE Head);
void sort_list(PNODE Head);
int length_list(PNODE Head);
int insert_list(PNODE Head,int i,ElemType e);
int delete_list(PNODE Head,int i,ElemType e);
PNODE creat_list(void)//初始建立链表
{
int n,i;
PNODE q;
PNODE Head=(PNODE)malloc(sizeof(NODE));
if(Head==NULL){
printf("程序分配失败!n");
exit(-1);
}
PNODE p=Head;
p->next=NULL;
printf("请输入链表的个数:");
scanf("%d",&n);
for(i=0;i
q=(PNODE)malloc(sizeof(NODE));
if(q==NULL){
printf("结点新建分配失败!n");
exit(-1);
}
p->next=q;
printf("输入元素的值:");
scanf("%d",q->data);
p=p->next;
q=q->next;
}
return Head;
}
void traversal_list(PNODE Head)//遍历输出链表
{
while(Head!=NULL){
printf("%d",Head->data);
Head=Head->next;
}
printf("n");
}
int length_list(PNODE Head)//计算链表长度
{
PNODE p=Head->next;
int len=0;
if(p!=NULL){
len++;
p=p->next;
}
return len;
}
void sort_list(PNODE Head)//排序操作
{
int i,j,t;
int len=length_list(Head);
PNODE p,q;
for(i=0,p=Head->next;inext){
for(j=i+1,q=p->next;jnext){
if(p->data>q->data)
t=p->data;
p->data=q->data;
q->data=t;
}
}
}
int insert_list(PNODE Head,int i,ElemType e)//插入操作
{
int j;
PNODE p,s;
while(p&&j
p=p->next;
++j;
}
while(!p&&j>i-1){return 0;}
s=(PNODE)malloc(sizeof(NODE));
s=p->next;
e=s->data;
s->next=p->next;
return 1;
}
int delete_list(PNODE Head,int i,ElemType e)//删除操作
{
int j;
PNODE p,q;
while(p->next&&j
p=p->next;
++j;
}
while(!(p->next)&&j>i-1){return 0;}
q=(PNODE)malloc(sizeof(NODE));
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 1;
}编译出来的问题:
error C2065: 'creat_list' : undeclared identifier
error C2440: '=' : cannot convert from 'int' to 'struct Node *'error C2065: 'traversal_list' : undeclared identifier
error C2065: 'length_list' : undeclared identifier
error C2065: 'sort_list' : undeclared identifier
解决方案
函数需要前置申明,或者函数定义放在调用的位置前面