数据结构(C语言)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言)相关的知识,希望对你有一定的参考价值。

用C语言编程解决下述问题:
设顺序表L中的数据元素递增有序。试写一个算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
要求有必要的类型说明,并完成下述函数功能:
(1) InitList( ):生成一个顺序表
(2) Insert_SqList ( ):在有序表中插入一个元素x
(3) ListPrint( ):显示顺序表所有元素
在主函数main( )中调用各个子函数完成顺序表的基本操作。

求解 谢谢各位大虾

#include<stdio.h>

//顺序表
#define ListSize 100 //表空间的大小可根据实际需要而定,这里假设为100
typedef int DataType; //DataType的类型可根据实际情况而定,这里假设为int
typedef struct

DataType data[ListSize];//向量data用于存放表结点
int length;//当前的表长度
SeqList;

//表的初始化
void InitList(SeqList *L)//将表的长度置为0

L->length=0;


//将新结点x按升序插入L所指的顺序表
int Insert_SqList(SeqList *L,DataType x)

int i=0,j;
//表空间溢出
if (L->length>=ListSize)

printf("表空间溢出\n");
return 0;

//第一个元素直接插入
if(L->length==0)
L->data[L->length]=x;
else

//寻找插入位置
//跳出循环2个条件1:一直找到末尾没有比x大的
//2:找到比x不小的元素
while(i<L->length&&L->data[i]<x) i++;

if(i==L->length)//如果到末尾,直接添加
L->data[i]=x;
else

//结点后移
for(j=L->length-1;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i]=x; //插入x



//表长加1
L->length++;
return 1;


//打印顺序表
int ListPrint(SeqList *L)

int i;
if(L->length==0)

printf("顺序表为空\n");
return 0;


printf("顺序表:\n");
for(i=0;i<L->length;i++)
printf("%d ",L->data[i]);
return 1;


int main()

SeqList L,*p;
int num,j;
DataType x;

p=&L;

printf("请输入元素个数:");
scanf("%d",&num);

//表的初始化
InitList(p);

//录入数据
for(j=1;j<=num;j++)

printf("输入第%d个元素:",j);
scanf("%d",&x);
if(Insert_SqList(p,x)!=1)
return 1;

//打印顺序表
ListPrint(p);
return 0;
参考技术A /*(1) InitList( ):生成一个顺序表
(2) Insert_SqList ( ):在有序表中插入一个元素x
(3) ListPrint( ):显示顺序表所有元素
*/
#define LIST_SIZE 1024 //顺序表最大长度1024
typedef struct List //顺序表结构体

int num[LIST_SIZE];
int size;//顺序表长度
List;
#include<stdio.h>
void InitList(List * list)

//怎样初始化顺序表,生产10个数字的顺序表。
list->size=10;
for(int i=0;i<list->size;i++)
list->num[i]=i*10+100;

void Insert_SqList(List *list,int x)

int i=0,k;
for(i=0;i<list->size;i++)//找到最后一个比x小的数字的索引号i

if(list->num[i]>=x)

i--;
break;


for(k=list->size-1;k>i;k--)//把顺序表i后面位置的元素往后移

list->num[k+1]=list->num[k];

list->num[i+1]=x;//x插入到i+1位置
list->size++;

void ListPrint(List *list)

int i;
for(i=0;i<list->size;i++)

printf("%d ",list->num[i]);

printf("\n");

void main()

//随便测试的数据
List list;
InitList(&list);
ListPrint(&list);
Insert_SqList(&list,123);//插入元素123
puts("插入元素123后");
ListPrint(&list);
Insert_SqList(&list,132);//插入元素132
puts("插入元素132后");
ListPrint(&list);
参考技术B 你是在看严蔚敏、吴伟民的数据结构吗?
那些算法只要自己会用“类C语言”写就可以了。
如果你真要用C语言实现上述算法,也不难。
生成顺序表就是定义一个数组;
插入一个元素就是把当前元素依次与数组元素作比较,找到位置后将后面的元素向后移一位,再插入;
显示所有元素更简单,依次输出数组元素即可。
参考技术C #include<stdio.h>
#define arrsize 1024
int InitList(int a[])

int x,k=0;
printf("输入线性表数据(以0结束输入):");
scanf("%d",&x);
while(x!=0)

a[k]=x;
k++;
scanf("%d",&x);

return k;

int Insert_SqList(int a[],int x,int n)

int i=0;
while(i<n && a[i]<=x)
i++;
for(int h=n-1;h>=i;h--)

a[h+1]=a[h];

a[i]=x;

return n+1;


void ListPrint(int a[],int n)

printf("输出:");
for(int i=0;i<n;i++)
printf("%d ",a[i]);

int main()


int a[arrsize],elenum=0;
int InitList(int a[]);
void ListPrint(int a[],int n);
int Insert_SqList(int a[],int x,int n);

elenum=InitList(a);
ListPrint(a,elenum);
int y;
printf("\n请输入插入的整数:");
scanf("%d",&y);
elenum=Insert_SqList(a,y,elenum);
ListPrint(a,elenum);
return 0;

数据结构c语言版和java版有啥不同

数据结构c语言版和java版有什么不同

数据结构本身是一种逻辑上的概念,它是独立于特定语言或者实现的

比如说链表,概念上说就是一组结点构成的数据结构,其中每个结点均带有后续结点信息。各种语言都可以实现链表,但实现的思路都是基于上面的逻辑概念。

因此,学习数据结构不必拘泥于某种特定语言,归根结底是要把握每个数据结构(逻辑上)的精髓

在这个基础上,每种语言都可以实现特定的数据结构,差别只在于语法实现级别。

另外虽然Java/C++等语言都带有大量的标准类库,但这并不意味着可以忽视数据结构基础理论的学习。这直接关系到实际应用时,是只能死板套用现成模板,还是灵活应用各种结构高效实现需求。
参考技术A 学C语言的必须要懂数据结构因为基本上所有的都要你自己写,而JAVA已经把很多算法都已经帮你写好了所以,学JAVA对数据结构的要求并不高,所以可能数据结构C语言版的要求高一点更全一点,我学的数据结构就是C语言版的。。。本回答被提问者采纳 参考技术B 没什么不同,数据结构是一种计算机数学逻辑
C语言实现的版本,很简单就是利用数组和指针来完成数据结构
Java版本的,因为最常见的是类,所以只好用各种类和枚举来完成数据结构
参考技术C 1.数据结构和算法简介
数据结构是指数据在计算机存储空间中的安排方式,而算法是指软件程序用来操作这些结构中的数据的过程。
2.数据结构和算法的重要性
几乎所有的程序都会使用到数据结构和算法,即便是最简单的程序也不例外。比如,你希望打印出学生的名单,这个程序使用一个数组来储学生名单,然后使用一个简单的for循环来遍历数组,最后打印出每个学生的信息。
在这个例子中数组就是一个数据结构,而使用for循环来遍历数组,则是一个简单的算法。可见数据结构和算法是构成程序的灵魂所在,而且也有人提出数据结构+算法=程序。
3.为什么选择Java语言来描述数据结构和算法?
Java语言相比C和C++语言都要简单而且目前非常流行。有些朋友肯定会提出疑问,Java语言没有指针怎么能偶构建复杂的数据结构,事实上Java语言来构建复杂数据结构比使用其他如C、C++更为简单,而且还将给程序提供更高的安全性和更少的出错机会。
4.学习Java数据结构和算法需要哪些基础?
首先需要了解Java的基础语法,还必须对面向对象编程有所了解。当然这部分内容在我们的培训课程中将涉及到,请大家认真学习。
5.Java提供了容器类以及其他的工具类,还需要学习数据结构和算法吗?
很多朋友都存在这样的疑问,觉得Java中的数据结构和算法不是特别重要。其实这个是个误区,大家不要看到市面上的书籍以及视频很少会涉及到Java数据结构和算法的内容就觉得它不重要,其实它很重要。如果你只是想成为一个Java初级程序员,你可以不去了解它,你知道如何使用Java中的容器类来完成自己的应用就可以了。但是如果你想成为一个Java中级或者高级程序员,数据结构和算法的知识是必不可少的。我相信大家都不会满足于使用容器类,而是希望能够了解其原理完善自己的应用。

一般c对数据结构的了解要求更高,java或者.net都有自己的类库。比如java的类库里面的东西就是sun公司的人员给你封装好了的,你想用链表么得就有类似的类直接可以用。但是c语言/c++的一般是要手动编写。但是了解数据结构还是很有好处的,一定程度上可以帮助你去了解java中的某些类。

摘选了一下目录的一部分:
3.3.1 Collection接口
3.3.2 Iterator接口
3.3.3 List接口、ArrayList类和LinkedList类
3.3.4 例:remove方法对LinkedList类的使用
3.3.5 关于ListIterator接口
3.4 ArrayList类的实现

可以看到,这些类都是java封装好类,直接可以拿来用。而java版本的数据结构就是告诉你这些类的内部实现。一般编程人员也不需要了解太多,当然了解了更好。

以上是关于数据结构(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

C语言 版 数据结构

C语言的数据类型分为几种?

C语言结构体定义

数据结构C语言问题

C语言数据结构求解

关于C语言的问题,数据结构