1.计算机大神进
5.
// aaaaaaaaaaaa.cpp : 定义控制台应用程序的入口点。
//
// Tree.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
typedef int ElemType;
typedef struct BiTNode{
ElemType data;
struct BiTNode*lchild,*rchild;
}BiTNode,*BiTree;
void CreateTree(BiTree&T)
{
int ch;
cout>ch;
if(ch==0) T=NULL;//ch==自己定义的数
else
{
T=new BiTNode;
if(T==NULL) return;
T->data=ch;
CreateTree(T->lchild);
CreateTree(T->rchild);
}
}
void visit(BiTree T)
{
if(T->data!=0) coutdatalchild);
preOrder(T->rchild);
}
}
void zhongxu(BiTree T)//中序遍历
{
if(T!=NULL)
{
zhongxu(T->lchild);
visit(T);
zhongxu(T->rchild);
}
}
void houxu(BiTree T)//后序遍历
{
if(T!=NULL)
{
houxu(T->lchild);
houxu(T->rchild);
visit(T);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
BiTree Tree;
CreateTree(Tree);
cout
2.数据结构 线性表操作《实验报告》,有人会吗
您好,一般使用链表来描述。
优点:对于新增和删除操作add和remove和方便。不需要移动元素。
缺点:不方便随机访问元素,linkedList要移动指针 代码实现:// Test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include "stdlib.h" //宏定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LT(a,b) ((a)<(b)) #define N = 100 typedef int Status; typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *linkList; Status initList(linkList &L){ L = (linkList)malloc(sizeof(LNode)); //申请一个头节点 if(!L) exit(OVERFLOW); //申请空间失败 L->next=NULL; //建立一个带都节点的空链表 return OK; } void createList(linkList L, int n){ if (!L) { initList(L); } ElemType data; linkList p,q = L; printf("输入节点数据的个数%d:rn", n); for(int i = 0; iinkList) malloc( sizeof(LNode)); //申请一个新节点 scanf("%d",&data); p->data = data; p->next = q->next; q->next = p; q = p; } } Status insertList(linkList L, ElemType e, int i){ linkList s, p = L; int j = 0; while (p && jnext; j++; } if (!p ||j >i) return ERROR; s = (linkList) malloc(sizeof(LNode)); //生成新节点 s->data = e; s->next = p->next; //插入L中 p->next = s; return OK; } Status deleteListElem(linkList L, int i, ElemType &e){ linkList p, q; int j = 0; p = L; while (p && jnext; ++j; } if (!p->next || j>i) return ERROR; //删除的位置不对 q = p->next; p->next = q->next; e = q->data; free(q); //释放节点 return OK; } void InsertSort(linkList L) { linkList list; linkList node; linkList p; linkList q; list = L->next; L->next = NULL; while (list != NULL) { node = list, q = L; while (q && node->data > q->data ) { p = q; q = q->next; } if (q == L) { L = node; } else { p->next = node; } list = list->next; node->next = q; } } void mergeList(linkList &La, linkList &Lb, linkList &Lc){ linkList pa, pb, pc; pa = La->next; pb = Lb->next; Lc = pc = La; while (pa && pa) { if (pa->data > pb->data) { pc->next = pb; pc = pb; pb =pb->next; }else{ pc->next = pa; pc = pa; pa =pa->next; } } pc->next = pa? pa :pb; free(Lb); } void printList(linkList L){ printf("当前值:"); linkList p; p = L->next; while(p){ printf("%d ", p->data); p = p->next; } printf("rn"); } void main() { linkList La,Lb,Lc; ElemType e; int init,i; printf("LA:rn"); initList(La); createList(La, 5); insertList(La, 7, 3); printList(La); deleteListElem(La, 3, e); printList(La); InsertSort(La); printList(La); printf("Lb:rn"); initList(Lb); createList(Lb, 4); InsertSort(Lb); printList(Lb); printf("Lc:rn"); initList(Lc); mergeList(La, Lb, Lc); printList(Lc); }。
3.线性表怎么写
A是一个结构数组,A[i].data是值,A[i].next是下标,表示下一个数据元素的位置。A[0]是线性表的表头。当A[i].next==0时,表示A[i].data是线性表的最后一个数据元素。
通过A[0].next可以找出线性表的第一个元素的下标为3,第一个数据元素为A[3].data,即78,根据A[3].next也就是2,找到第二个数据元素A[2].data,即50,再根据A[2].next找到第三个元素。以此类推。
这道题的答案是:78,50,40,60,34,90
4.数据结构线性表
线性表是一种数据元素有序的逻辑结构,通常采用顺序存储结构和链式存储结构。
线性表采用顺序存储结构时,有利用线性表长度的计算、线性表数据元素的存取和数据元素的遍历,同时也从物理结构上反映了线性表数据元素的逻辑结构,有点类似于c语言中的数组,但是采用顺序存储结构时,插入和删除数据元素时,要移动较多的数据元素;采用链表结构存储的线性表,克服了插入和删除数据元素时要移动较多元素的缺点,其只要寻找到需要插入和删除的数据元素处,处理相应的指针就可以实现数据元素的插入和删除,同时也和顺序存储的线性表一样方便遍历,但是其不利于计算线性表的长度,线性表的链表存储结构有以下几种常见类型:采用带头指针和头结点的单链表、采用仅带头指针的单链表、带头指针和头结点的循环链表、带头指针和尾结点的循环链表、双向链表等形式。在实际应用中,结合顺序表易于计算表长和链表易于插入和删除的特点,实际一般采用两者结合的一种单链表,其链表类型为带有头指针(含头结点)和尾指针,以及含有线性表长度的分量,在一元多项式的运算中采用的就是这种链式存储结构。
此外,还有一种一般应用于无指针的高级语言中的静态单链表的存储结构。
5.数据结构课设总结
我正好在做课设,我把我的总结给你。
数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课。随着高级语言的发展,数据结构在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。
紧张的两周数据结构实训很快就过去了,通过这两周的实践学习,不仅使我们巩固了以前的知识并在此基础上还对数据结构的特点和算法有了更深的了解,使我们在这门课程的实际应用上也有了一个提高。
首先这两周的学习,使我们在巩固了原有的理论知识上,又培养了灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我们体会到自身知识和能力在实际中的应用和发挥。其次,它激发了我们创新意识,开发创造的能力和培养沟通能力。另外,让我们进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我们数据结构的学习和提高很有益处,并且使我们明白了程序设计过程,如解决一些实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型——线性表、栈、队列、串、数组、广义表、树和二叉树以及图等,然后确定处理过程——算法,通过在编译环境中的编译与调试,可到最终的程序。最后,在这次的实训过程中,我们深刻的认识到了自己在学习方面的不足之处,我知道我还有太多的基本的思想没有真正的理解,当然我们不会灰心,我们会在以后的日子里努力弥补我们的不足。
在两周的实训中,我们也体会到了团队合作的重要性,从最初的查阅资料到最后的程序的成功运行,我们组有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。两个礼拜的时间我们经历了很多,也收获了很多。与其说这次的实训是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我们不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。
总之,两个礼拜的课程设计让我们受益匪浅。我们深深认识到,要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,经历失败,从失败中总结经验,然后再不断的尝试,才能获得成功。
6.数据结构的实验报告 .1、顺序存储结构下线性表的各种操作 2、链式存
顺序存储结构下线性表:#include #include #define MAXSIZE 100 //存储定义 typedef int ElemType; typedef struct list { ElemType *elem; int listsize; int length; }Sqlist; void initlist_sq(Sqlist *L) //初始化线性表 { L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType)); if(!L->elem) exit(0); L->length=0; L->listsize=MAXSIZE; } void insert_sq(Sqlist *L,int n,ElemType x) //插入数据元素 { int i,j=0; if(n>=MAXSIZE||n>=L->length||n<=0) { printf("n is errorn"); //非法位置,无法运行 return ; } for(i=L->length-1;jlength-n;i--,j++) { L->elem[i+1]=L->elem[i]; //结点后移 } L->elem[n]=x; L->length++; //表长加1 //printf("**********Sqlist inserted**********n"); } void creat_sq(Sqlist *L) //创建线性表 { int tablen,i=0; ElemType temp; printf("please input the table lengthn"); scanf("%d",&tablen); //定义表长 printf("please input a serial numbern"); do { scanf("%d",&temp); //输入数据元素 L->elem[i++]=temp; L->length++; }while((ilistsize )); } void display_sq(Sqlist *L) //打印线性表 { int i; i=0; printf("n**********Sqlist **********n"); do { printf("%dt",L->elem[i]); //从第一个元素开始打印 } while(++ilength); } int Search_sq(Sqlist *L,ElemType x) //按值查找数据元素 { int i; i=0; do { if(L->elem[i]==x) return i+1; } while(++ilength); return 0; } ElemType Search_sq_byV(Sqlist *L,int n) //下标法查找数据元素 { //ElemType temp; //printf("%d",L->elem[n-1]); return L->elem[n-1]; } void delete_sq(Sqlist *L,int pos) //删除数据元素 { int i; i=0; do { L->elem[pos-1]=L->elem[pos]; //结点前移 pos++; }while(++ilength); L->length--; //表长减一 } int main(void) //主函数 { Sqlist L1; ElemType temp; char cmd; int i=0; initlist_sq(&L1); printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=Delete,V=Pos`findn"); while(1) { cmd=getchar(); switch(cmd) { case 'C': case 'c': creat_sq(&L1); display_sq(&L1); printf("nX=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=Delete,V=Pos`findn"); break; case 'D': case 'd': printf("please input the number pos to be deletedn"); scanf("%d",&i); delete_sq(&L1,i); display_sq(&L1); printf("nX=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=Delete,V=Pos`findn"); break; case 'I': case 'i': printf("please input the number to be insertedn"); scanf("%d",&temp); printf("please input the position to be inserted(1~100)n"); scanf("%d",&i); insert_sq(&L1,i-1,temp); display_sq(&L1); printf("nX=EXIT,C=CREAT,P=DISPLAY,I=INSER,S=SEARCT,D=Delete,V=Pos`findn"); break; case 'S': case 's': printf("please input the number wantedn"); scanf("%d",&temp); printf("pos is %dn",Search_sq(&L1,temp)); printf("nX=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARC,D=Delete,V=Pos`findn"); break; case 'V': case 'v': printf("please input the pos wantedn"); scanf("%d",&i); printf(" elem is%dn",Search_sq_byV(&L1,i)); printf("nX=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARC,D=Delete,V=Pos`findn"); break; case 'P': case 'p': display_sq(&L1); printf("nX=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARC,D=Delete,V=Pos`findn"); break; case 'X': case 'x': free(L1.elem); return 1; default:break; } } //getchar(); return 1; }。