c-一个数据结构 链表的问题

问题描述

一个数据结构 链表的问题

#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

解决方案

函数需要前置申明,或者函数定义放在调用的位置前面

时间: 2024-11-10 01:09:26

c-一个数据结构 链表的问题的相关文章

c++ delphi 回调函数-一个数据结构的题目,涉及Hash、双链表、回调函数等,求大神指教?

问题描述 一个数据结构的题目,涉及Hash.双链表.回调函数等,求大神指教? 数据结构相关的题目描述 typedef?struct?_FILE_NODE?{ _FILE_NODE?*Prev; _FILE_NODE?*Next; WCHAR?wzFileName[MAX_PATH]; DWORD?dwLowDateTimeLastWrite; }?FILE_NODE,?*LPFILENODE; 实现两个项目: 一.DLL 1.实现文件遍历的功能 2.导出接口中,可由用户指定遍历哪个文件夹 3.提

泛型思想理解数据结构链表

前言 1. 本文用到一个很重要的思想--泛型编程思想:不熟悉泛型的话,请自行搜索相关资料学习(void *,如memcpy,memmove,qsort,memset等库函数均使用到了泛型思想) . 2. 本文最后会提供一个demo程序附件,该demo程序以c99标准进行编写的,在Linux-gcc下调试通过,vc6下可能会有错误. 3. 本文图示中,红色实线表示要添加的地方,黑色虚线表示要断开的地方,黑色实线保持原样. 4. 本文链表设计为最简单的非循环单链表. 数组与链表比较 数组 链表 优点

单链表-数据结构 链表的创建 不知道怎么改

问题描述 数据结构 链表的创建 不知道怎么改 #include #include #include typedef struct Node //创建新的数据类型 { int data; //数据域 struct Node * pNext; //指针域 }NODE, *PNODE; //NODE等价与struct Node //PNODE等价于struct Node * //函数声明 PNODE create_list(); void traverse_list(NODE pHead); int

JavaScript数据结构链表知识详解_javascript技巧

最近在看<javascript数据结构和算法>这本书,补一下数据结构和算法部分的知识,觉得自己这块是短板. 链表:存储有序的元素集合,但不同于数组,链表中的元素在内存中不是连续放置的.每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 好处:可以添加或移除任意项,它会按需扩容,且不需要移动其他元素. 与数组的区别:     数组:可以直接访问任何位置的任何元素:     链表:想要访问链表中的一个元素,需要从起点(表头)开始迭代列表直到找到所需的元素. 做点小笔

Java 数据结构链表操作实现代码_java

 链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表.循环链表.双向链表,下面将逐一介绍.链表在数据结构中是基础,也是重要的知识点,这里讲下Java 中链表的实现, JAVA 链表操作:单链表和双链表 主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都相应的应用,链表有多种类别,文章针对单链表和双链表进行分析.链表中数据就像被一个

数据结构 链表 插入出错

问题描述 数据结构 链表 插入出错 #include <stdio.h> #include <string> #include <iostream> using namespace std; struct LNode{ string name; string sex; int age; LNode *next; }; LNode *students; void InitList(LNode *list){ list=(LNode *)malloc(sizeof(LNod

第十章 基本数据结构——链表

 链表 链表与数组的区别是链表中的元素顺序是有各对象中的指针决定的,相邻元素之间在物理内存上不一定相邻.采用链表可以灵活地表示动态集合.链表有单链表和双链表及循环链表.书中着重介绍了双链表的概念及操作,双链表L的每一个元素是一个对象,每个对象包含一个关键字和两个指针:next和prev.链表的操作包括插入一个节点.删除一个节点和查找一个节点,重点来说一下双向链表的插入和删除节点操作,图例如下: 链表是最基本的数据结构,凡是学计算机的必须的掌握的,在面试的时候经常被问到,关于链表的实现,百度一下就

C++ 数据结构链表的实现代码

C++ 链表 之前一直没怎么在意C++中的链表,但是突然一下子让自己写,就老是出错.没办法,决定好好恶补一下该方面的知识,也为今后的数据结构打下个良好的基础,于是我总结出以下几点,有些地方可能不正确,还望大家不吝赐教,旨在共同进步. 总结: 1.链表List的基本单元是节点Node,因此想要操作方便,就必须为每一步打好基础,Node的基本结构如下: class Node { public: int data; Node *next; Node(int da = 0, Node *p = NULL

位置-电工4课程作业1:实现一个单链表

问题描述 电工4课程作业1:实现一个单链表 实现单链表并且要有如下操作:插入(任意位置).删除(包括中间结点).查找.计算链表长度.清空.链表连接(重载运算符),并且写一个程序验证. 解决方案 http://www.cnblogs.com/lifuqing/archive/2011/08/20/List.html 解决方案二: http://blog.csdn.net/hopeyouknow/article/details/6677974