c语言数据结构
⑴ c语言数据结构
应该先学 语言,语言是编程的基础。再学数据结构,数据结构主要用于 解决复杂的程序问题、程序思想等,没有语言做基础,很难学。
⑵ c语言数据结构pdf
强烈建议买国外版。数据结构(C语言版)—作者:(美)霍罗威茨等着,李建中等译出版社:机械工业出版社本书的采用该类教材传统的内容与组织结构。层次清晰,代码质量很高。可以从书总的叙述看出作者的教学经验。尽管有一定难度,但作者自始至终,都是从相对基础知识开始讲起,循序渐进。(比如c的数据存储?式),这点比严蔚敏的那本好很多。最重要的是,书中的证明都很简洁,与之相比严蔚敏的教材简直就是噩梦(比如严的书中关于模式匹配的讲解)。
⑶ C语言 数据结构
第一处:s->next=q->next;改为
s->next = p;
因前一句为q->next=s;
连起来相当于s->next = s;
这样的链表是有一个环的,插入后再遍历会导致死循环。
或者可以这样把两句倒过来写:
s->next=q->next;
q->next=s;
两种选一个。
第二处:
free(p);
插入一个节点无需free任何东西,因原有所有节点都需要保留。
⑷ c语言数据结构
#include<stdio.h>
#include<malloc.h>
#include<string.h>
struct student{ int age; char name[10]; struct student *next; } ;
void main() { struct student *p,*p1,*p2;
p1=(struct student *)malloc(sizeof(struct student)); if ( p1==NULL ) goto errorexit0;
strcpy(p1->name,"张三"); p1->age=30; p1->next=NULL;
p2=(struct student *)malloc(sizeof(struct student)); if ( p2==NULL ) goto errorexit1;
strcpy(p1->name,"李四"); p2->age=40; p2->next=NULL;
p=p1; p->next=p2;
printf("%s %s\n",p->name,(p->next)->name);
free(p1); free(p2); return;
errorexit1: free(p1); printf("申请节点2出错。\n");
errorexit0: printf("申请节点1出错。\n");
}
⑸ c语言数据结构
#include <stdlib.h>
#include <iostream>
#define OK 1
#define MVNum 100
typedef int Status;
typedef char VerTexType;
typedef int ArcType;
struct closedgestruct
{
VerTexType adjvex; //最小边的顶点ArcType
ArcType lowcost; //最小边的权值
}closedge[MVNum];
Status Min()
{
int x,N,min=closedge[1].lowcost;
for(x=1;x<=MVNum;x++)
{
if(min>closedge[x].lowcost)
min=closedge[x].lowcost;//找closedge数组中权值最小的那组
N=x;//N保存权值最小的那组的下标
}
std::cout<<N;//输出最小权值对应的那组数组的下标
return OK;
}
⑹ c语言的数据结构是什么
根据你的问题,我想一种计算机语言的数据结构,是指这种语言系统所提供的,在程序中存储数据可以使用的基本数据组织形式。C语言的基本数据结构除了各种数据类型的简单变量外,主要的就是数组、结构、联合。
⑺ 数据结构和C语言有什么区别
数据结构是数据及数据之间的关系,C语言只是一门编程语言,可以用C语言来写程序,实现数据按照某种特定的关系来组织和管理数据(也就是实现数据结构),所以数据结构的课程会有不同的语言版本,其实就是用不同的语言来实现数据结构了。呵呵,不知道你明白没有呢~~
⑻ C语言编写 数据结构
#include<stdio.h>
#include<stdlib.h>
typedefstructintnumber
{
intn;
structintnumber*next;
}INTNUM;
INTNUM*creat(intnum)/*建立链表*/
{
INTNUM*p1,*p2,*head;
inti;
p1=(INTNUM*)malloc(sizeof(INTNUM));
head=p1;
p2=p1;
for(i=0;i<num-1;i++)
{
p1=(INTNUM*)malloc(sizeof(INTNUM));
p2->next=p1;
p2=p1;
}
p1->next=NULL;
returnhead;
}
voidinput(INTNUM*head)/*输入链表数据*/
{
INTNUM*p;
p=head;
while(p->next!=NULL)
{
scanf("%d",&(p->n));
p=p->next;
}
scanf("%d",&(p->n));
}
voidoutput(INTNUM*head)/*输出链表数据*/
{
INTNUM*p;
p=head;
while(p->next!=NULL)
{
printf("%d/t",p->n);
p=p->next;
}
printf("%d/n",p->n);
}
voidmain(void)
{
INTNUM*pa,*pb,*pc,*heada,*headb,*headc;/*pc是指向新链表的指针*/
intcounta,countb;/*counta,countb是建立链表的结点数*/
printf("请输入建立A链表的结点数:");
scanf("%d",&counta);
pa=creat(counta);
heada=pa;
printf("请按递增输入A链表结点上的数据:");
input(heada);
printf("打印A链表结点上的数据:/n");
output(heada);
printf("请输入建立B链表的结点数:");
scanf("%d",&countb);
pb=creat(countb);
headb=pb;
printf("请按递增输入B链表结点上的数据:");
input(headb);
printf("打印B链表结点上的数据:/n");
output(headb);
printf("将链表A和链表B仍然按照递增关系合并成一个新的链表C:");
headc=heada;
pc=pa;
pa=pa->next;
while(pa&&pb)
{
if(pa->n<=pb->n)
{
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pc->next;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
printf("打印合并后链表结点上的数据:/n");
output(headc);
}
结果如下:
请输入建立A链表的结点数:3
请按递增输入A链表结点上的数据:12030
打印A链表结点上的数据:
12030
请输入建立B链表的结点数:5
请按递增输入B链表结点上的数据:218222632
打印B链表结点上的数据:
218222632
将链表A和链表B仍然按照递增关系合并成一个新的链表C:打印合并后链表结点上的数据:
12182022263032
⑼ c语言 数据结构(面向c语言)
只看书确实不行,要动手去做,人都有惰性,但要想成为强者你就要付出,当你战胜你的惰性并自己动手做一些小程序时,你收获的不仅仅是编写出这些程序的成就感,更有成功的喜悦。我原来也是这样不想去手去做,但老师布置的做作业都非常有针对性,一定要静下心来去完成,可能刚开始做着很难或很慢,但坚持下去,相信你可以办到的,学编程语言归根结底还是学语言,就像你学英语等外国语言一样,学语言就要多动口手,平时多积累,也许积累的过程很痛苦,但等有一天你回首就会发现你学到了很多。总而言之:坚持+动手=学会编程。
至于学习编程的论坛网站,给你一些个人觉得可以的:CSDN 编程论坛 编程爱好者论坛 VC知识库等都不错,你可以注册一个号,平时有什么问题直接上去问就行了,多学多动手,坚持下去,多问。
祝成功。。。。。。。。。