严蔚敏那本《数据结构》书上的伪代码要怎么在vc环境中运行?急!很急!非常急!十万火急!
严蔚敏版的《数据结构》(c语言版)上面都是伪代码,学了一些c++的语法,但不会c,不知道如何区分伪代码中哪些是c的,那些是数据结构中的基本概念和术语。很想在vc6.0的环...
严蔚敏版的《数据结构》(c语言版)上面都是伪代码,学了一些c++的语法,但不会c,不知道如何区分伪代码中哪些是c的,那些是数据结构中的基本概念和术语。很想在vc6.0的环境下实现一些算法,加深理解,可是都无法运行,急啊!!!而跟严蔚敏版配套的《数据结构算法解析》(高一凡 著)那些程序一定要在borland c++里运行,在vc6.0环境下要改头文件添加文件啦,很麻烦,否则很多错,我rt!高手帮忙啊,比如如何实现:
顺序线性表的建立、插入及删除。
链式线性表的建立、插入及删除。
还有数据结构怎么样才能学好?
希望各位达人大虾畅所欲言,若字字珠玑,句句精辟,小弟不会吝惜分数的。 展开
顺序线性表的建立、插入及删除。
链式线性表的建立、插入及删除。
还有数据结构怎么样才能学好?
希望各位达人大虾畅所欲言,若字字珠玑,句句精辟,小弟不会吝惜分数的。 展开
3个回答
展开全部
1.严蔚敏数据结构的也有配巧游扮套的c语言版带光盘的书是有卖孝灶的。
2.我开始学的时候也就是先指针,再结构体分解了去一块块的学习,有点懂了才开始写代码的。
理论的倒是以前学过的,(以前没动手写过)
3.一个单链表的标准模板(我就是模仿这个人的模板开始学习的,再磨哗去自己写双链表,栈,二叉树这样一个过程的)
函数的功能和函数名一致的,你可以对照着严蔚敏那本上单链表的函数列表看
include<malloc.h>
#include<stdio.h>
typedef int ElemType;
#define TRUE 1
#define FALSE 0
#define NULL 0
#define flag -1
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode,*LinkedList;
LinkedList LinkedListInit()
{
LinkedList L;
L=(LinkedList)malloc(sizeof(LNode));
L->next=NULL;
return L;
}
void LinkedListClear(LinkedList L)
{
L->next=NULL;
printf("链表已经清空\n");
}
int LinkedListEmpty(LinkedList L)
{
if(L->next==NULL)
return TRUE;
else
return FALSE;
}
/* 遍历单链表 check*/
void LinkedListTraverse(LinkedList L)
{
LinkedList p;
p=L->next;
if(p==NULL)
printf("单链表为空表\n");
else
{
printf("链表中的元素为:\n");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
printf("\n");
}
int LinkedListLength (LinkedList L)
{
LinkedList p;
int j;
p=L->next;
j=0;
while(p!=NULL)
{
j++;p=p->next;
}
return j;
}
LinkedList LinkedListGet(LinkedList L,int i)
{
LinkedList p;int j;
p=L->next; j=1;
while (p!=NULL && j<i )
{
p=p->next; j++;
}
if (j==i)
return p;
else
return NULL;
}
int LinkedListLocate ( LinkedList L, ElemType x)
{
LinkedList p;
int j;
p=L->next;
j=1;
while ( p!=NULL && p->data != x)
{
p=p->next;j++;
}
if(p)
return j;
else
return 0;
}
void LinkedListInsert(LinkedList L, int i, ElemType x)
{
LinkedList p,s;
int j;
j=1;p=L;
while(p&&j<i)
{
p=p->next;j++;}
if(p==NULL||j>i)
printf("插入位置不正确\n");
else
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;
printf("%d已插入到链表中\n",x);
}
}
void LinkedListDel(LinkedList L,int i)
{
LinkedList p,q;
int j;
j=1;p=L;
while(p->next&&j<i)
{
p=p->next;j++;}
if(p->next==NULL)
printf("删除位置不正确\n");
else {q=p->next;p->next=q->next;free(q);
printf("第%d个元素已从链表中删除\n",i);
}
}
LinkedList LinkedListCreat( )
{
LinkedList L=LinkedListInit(),p,r;
ElemType x;
r=L;
printf("请依次输入链表中的元素,输入-1结束\n");
scanf("%d",&x);
while (x!=flag)
{
p=(LinkedList)malloc(sizeof(LNode));
p->data=x;
r->next=p;
r=p;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
int scan()
{int d;
printf(".\n");
printf("*******************************\n");
printf("1.初始化链表\n");
printf("2.输入链表\n");
printf("3.求链表长度\n");
printf("4.检验是不是空链表\n");
printf("5.遍历链表 \n");
printf("6.从链表中按照位置查找元素值\n");
printf("7.从链表中按照元素值查找位置\n");
printf("8.向链表中插入元素\n");
printf("9. 从链表中删除元素\n");
printf("10.清空链表\n");
printf("11.合并有序链表(需要重新输入两个有序递增链表)\n");
printf("键入其他键退出\n");
printf("*******************************\n");
printf(".\n");
scanf("%d",&d);
return(d);
}
LinkedList un(LinkedList La,LinkedList Lb) /*合并链表*/
{
LinkedList p,q,r;
p=La->next;
q=Lb->next;
r=La;
while((p!=NULL)&&(q!=NULL))
if(p->data<=q->data)
{
r->next=p; r=p;p=p->next;
}
else
{
r->next=q; r=q;q=q->next;
}
if(p!=NULL) r->next=p;
if(q!=NULL) r->next=q;
return La;
}
void print(LinkedList L) /*输出链表中的结点*/
{
LinkedList p;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
main()
{
int quit=0;
int i,locate;
ElemType e;
LinkedList L,p,La,Lb,Lc;
while(!quit)
switch(scan())
{ case 1:L=LinkedListInit();printf("\n");break;
case 10:LinkedListClear(L);printf("\n");break;
case 3:printf("链表的长度为 %d\n",LinkedListLength(L));break;
case 4:if(LinkedListEmpty(L))printf("链表为空\n");else printf("链表非空\n");break;
case 5:LinkedListTraverse(L);
break;
case 6:printf("请输入待查询元素在链表中的位置:");
scanf("%d",&i);
p=LinkedListGet(L,i);
if(p) printf("链表中第%d个元素的值为:%d\n",i,p->data);
else printf("查询位置不正确\n");
break;
case 7:printf("请输入待查询元素的值:");
scanf("%d",&e);
locate=LinkedListLocate(L,e);
if(locate)
printf("%d在链表中的位置是:%d\n",e,locate);
else printf("链表中没有值为%d的元素\n",e);
break;
case 8:printf("请输入插入元素的位置和值(中间以空格或回车分隔):\n");
scanf("%d%d",&i,&e);
LinkedListInsert(L,i,e);
break;
case 9:if(LinkedListLength(L)==0)
printf("链表已经为空,不能删除\n");
else {printf("请输入待删除元素的位置:\n");
scanf("%d",&i);
LinkedListDel(L,i);}
break;
case 2:L=LinkedListCreat();
printf("\n");break;
case 11:
{printf("合并有序链表:\n");
printf("请输入第一个有序链表\n");
La=LinkedListCreat( );
printf("请输入第二个有序链表\n");
Lb=LinkedListCreat( );
Lc=un(La,Lb);
print(Lc);
break;}
default:quit=1;}
}
你能把他的东西看看懂,关了再自己写上一遍,你也通了,个人感觉后面的case语句便于输入,链表的函数熟练了就可以
4 万事开头难,你会链表之后你会学得很快的,
祝你成功!!!!!!!!!1
2.我开始学的时候也就是先指针,再结构体分解了去一块块的学习,有点懂了才开始写代码的。
理论的倒是以前学过的,(以前没动手写过)
3.一个单链表的标准模板(我就是模仿这个人的模板开始学习的,再磨哗去自己写双链表,栈,二叉树这样一个过程的)
函数的功能和函数名一致的,你可以对照着严蔚敏那本上单链表的函数列表看
include<malloc.h>
#include<stdio.h>
typedef int ElemType;
#define TRUE 1
#define FALSE 0
#define NULL 0
#define flag -1
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode,*LinkedList;
LinkedList LinkedListInit()
{
LinkedList L;
L=(LinkedList)malloc(sizeof(LNode));
L->next=NULL;
return L;
}
void LinkedListClear(LinkedList L)
{
L->next=NULL;
printf("链表已经清空\n");
}
int LinkedListEmpty(LinkedList L)
{
if(L->next==NULL)
return TRUE;
else
return FALSE;
}
/* 遍历单链表 check*/
void LinkedListTraverse(LinkedList L)
{
LinkedList p;
p=L->next;
if(p==NULL)
printf("单链表为空表\n");
else
{
printf("链表中的元素为:\n");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
printf("\n");
}
int LinkedListLength (LinkedList L)
{
LinkedList p;
int j;
p=L->next;
j=0;
while(p!=NULL)
{
j++;p=p->next;
}
return j;
}
LinkedList LinkedListGet(LinkedList L,int i)
{
LinkedList p;int j;
p=L->next; j=1;
while (p!=NULL && j<i )
{
p=p->next; j++;
}
if (j==i)
return p;
else
return NULL;
}
int LinkedListLocate ( LinkedList L, ElemType x)
{
LinkedList p;
int j;
p=L->next;
j=1;
while ( p!=NULL && p->data != x)
{
p=p->next;j++;
}
if(p)
return j;
else
return 0;
}
void LinkedListInsert(LinkedList L, int i, ElemType x)
{
LinkedList p,s;
int j;
j=1;p=L;
while(p&&j<i)
{
p=p->next;j++;}
if(p==NULL||j>i)
printf("插入位置不正确\n");
else
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;
printf("%d已插入到链表中\n",x);
}
}
void LinkedListDel(LinkedList L,int i)
{
LinkedList p,q;
int j;
j=1;p=L;
while(p->next&&j<i)
{
p=p->next;j++;}
if(p->next==NULL)
printf("删除位置不正确\n");
else {q=p->next;p->next=q->next;free(q);
printf("第%d个元素已从链表中删除\n",i);
}
}
LinkedList LinkedListCreat( )
{
LinkedList L=LinkedListInit(),p,r;
ElemType x;
r=L;
printf("请依次输入链表中的元素,输入-1结束\n");
scanf("%d",&x);
while (x!=flag)
{
p=(LinkedList)malloc(sizeof(LNode));
p->data=x;
r->next=p;
r=p;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
int scan()
{int d;
printf(".\n");
printf("*******************************\n");
printf("1.初始化链表\n");
printf("2.输入链表\n");
printf("3.求链表长度\n");
printf("4.检验是不是空链表\n");
printf("5.遍历链表 \n");
printf("6.从链表中按照位置查找元素值\n");
printf("7.从链表中按照元素值查找位置\n");
printf("8.向链表中插入元素\n");
printf("9. 从链表中删除元素\n");
printf("10.清空链表\n");
printf("11.合并有序链表(需要重新输入两个有序递增链表)\n");
printf("键入其他键退出\n");
printf("*******************************\n");
printf(".\n");
scanf("%d",&d);
return(d);
}
LinkedList un(LinkedList La,LinkedList Lb) /*合并链表*/
{
LinkedList p,q,r;
p=La->next;
q=Lb->next;
r=La;
while((p!=NULL)&&(q!=NULL))
if(p->data<=q->data)
{
r->next=p; r=p;p=p->next;
}
else
{
r->next=q; r=q;q=q->next;
}
if(p!=NULL) r->next=p;
if(q!=NULL) r->next=q;
return La;
}
void print(LinkedList L) /*输出链表中的结点*/
{
LinkedList p;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
main()
{
int quit=0;
int i,locate;
ElemType e;
LinkedList L,p,La,Lb,Lc;
while(!quit)
switch(scan())
{ case 1:L=LinkedListInit();printf("\n");break;
case 10:LinkedListClear(L);printf("\n");break;
case 3:printf("链表的长度为 %d\n",LinkedListLength(L));break;
case 4:if(LinkedListEmpty(L))printf("链表为空\n");else printf("链表非空\n");break;
case 5:LinkedListTraverse(L);
break;
case 6:printf("请输入待查询元素在链表中的位置:");
scanf("%d",&i);
p=LinkedListGet(L,i);
if(p) printf("链表中第%d个元素的值为:%d\n",i,p->data);
else printf("查询位置不正确\n");
break;
case 7:printf("请输入待查询元素的值:");
scanf("%d",&e);
locate=LinkedListLocate(L,e);
if(locate)
printf("%d在链表中的位置是:%d\n",e,locate);
else printf("链表中没有值为%d的元素\n",e);
break;
case 8:printf("请输入插入元素的位置和值(中间以空格或回车分隔):\n");
scanf("%d%d",&i,&e);
LinkedListInsert(L,i,e);
break;
case 9:if(LinkedListLength(L)==0)
printf("链表已经为空,不能删除\n");
else {printf("请输入待删除元素的位置:\n");
scanf("%d",&i);
LinkedListDel(L,i);}
break;
case 2:L=LinkedListCreat();
printf("\n");break;
case 11:
{printf("合并有序链表:\n");
printf("请输入第一个有序链表\n");
La=LinkedListCreat( );
printf("请输入第二个有序链表\n");
Lb=LinkedListCreat( );
Lc=un(La,Lb);
print(Lc);
break;}
default:quit=1;}
}
你能把他的东西看看懂,关了再自己写上一遍,你也通了,个人感觉后面的case语句便于输入,链表的函数熟练了就可以
4 万事开头难,你会链表之后你会学得很快的,
祝你成功!!!!!!!!!1
展开全部
1:VC是可视化C++编程~对C的头文件跟库函数纳粗很多地方不兼容~
2:C++对于C的扩充很大,你那本教材是C描述数据用的是结构体和共用体~用C++描述的话用的是对象~
3:想上机实验数据结构 建议你还的系统学习下C里面的指针跟结构体跟搭茄老共用体.在TURBO C上
4:C跟C++的语法完全兼容但C++在C的基础上扩充了面向对象技术库函数也有扩充.
5:数据结构:就是用高级语言描述数据结构以及对这些结构的操作~主要学的是算法 冒泡排序啊,哈希值查找啊~学会了这知升些算法的思维 举一反三才是关键,用什么语言描述是其次,要有很好的离散数学基础~跟线性代数 你才能了解这些算的最根本的东西.
2:C++对于C的扩充很大,你那本教材是C描述数据用的是结构体和共用体~用C++描述的话用的是对象~
3:想上机实验数据结构 建议你还的系统学习下C里面的指针跟结构体跟搭茄老共用体.在TURBO C上
4:C跟C++的语法完全兼容但C++在C的基础上扩充了面向对象技术库函数也有扩充.
5:数据结构:就是用高级语言描述数据结构以及对这些结构的操作~主要学的是算法 冒泡排序啊,哈希值查找啊~学会了这知升些算法的思维 举一反三才是关键,用什么语言描述是其次,要有很好的离散数学基础~跟线性代数 你才能了解这些算的最根本的东西.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-03-13
展开全部
asdjk;ls vsdbncoudsg nCWUNVQWLK;J XDLASKJDAK NSCOIQJVNOD; UNCWAN09E4UNVDSFLJK FJKSJ A
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |