计算机软件基础讲解
LOGO
软件基础学习交流活动
自动化1201
活动主要流程
1
实验讲解
2
疑题解答
3
自由讨论环节
Your company slogan
实验一:单链表的插入和删除
程序如下:
#include<stdio.h> #include<string.h> #include<malloc.h> typedef struct node { char data; struct node *next; }NODE;
Your company slogan
实验二:二叉排序树的查找
//定义结构体数组并初始化(参阅c程序设计的教材) STU students[8]={ {26,"110610125","WXD",111,'M'}, {25,"110610124","WQH",111,'M'}, {41,"110610210","WCL",112,'M'}, {8,"110610107","YTT",111,'F'}, {68,"110610313","LBZ",113,'M'}, {44,"110610215","HHF",112,'M'}, {36,"110610205","WY",112,'F'}, {38,"110610207","ZLF",112,'F'} };
自由讨论环节
路 漫 漫 其 修 远 兮
吾 将 上 下 而 求 索
Your company slogan
活动结束
希望同学们在此次活动中能有所收获 抓紧时间复习计算机软件基础
自动化1201
Your company slogan
Your company slogan
实验二:二叉排序树的查找
//生成二叉排序树并输出根结点信息 TNODE *tree; tree=create_binary_sort_tree(students); printf("根结点信息为:\n"); print_out(tree); //查找关键字为8(或110610107)的结点并输出该结点信息 TNODE *find1=bstsearch(tree,8); printf("序号为8的学生信息为:\n"); print_out(find1); //查找关键字为38(或110610207)的结点并输出该结点信息 TNODE *find2=bstsearch(tree,38); printf("序号为38的学生信息为:\n"); print_out(find2); return 0; Your company slogan
实验一:单链表的插入和删除
NODE *creatlink() { NODE *head ,*s; int i; head=(NODE*)malloc(sizeof(NODE)); head->next=NULL; for(i=N-1;i>=0;i--) { s=(NODE*)malloc(sizeof(NODE)); s->data=c[i]; s->next=head->next; head->next=s; } return head; Your company slogan }
p66
Your company slogan
void dfs(struct headnode G[],int v) { ARCNODE *p; printf(‘%d->’,G[v].vexdata); visited[V]=1; p=G[v].firstarc; while(p!=NULL) { if(visited[p->adivex]==0) dfs(G,p->adjvex); p=p->nextarc; } };
Your company slogan
实验二:二叉排序树的查找
//二叉排序树查找子函数 TNODE *bstsearch(TNODE *root,int k) { if(root==NULL) return NULL; else if(root->key==k) return root; else if(root->key>k) return bstsearch(root->lchild,k); else return bstsearch(root->rchild,k); }
Your company slogan
void traver(stuct headnode G[]) { int v; For(v=1;v<=VTXUNM;v++) visited[v]=0; for(v=1;v<=VTXUNM;v++) if visited[v]==0 dfs(G,v); }
Your company slogan
//结点类型定义
Your company slogan
实验一:单链表的插入和删除
//字符数组定义,保存字符"TANKKYOU" #define N 10 char c[N]="TANKK YOU"; int main() { NODE *creatlink(); //函数声明 void printlink(NODE *head); void delete1(NODE*head,int i); void insert(NODE*head,int i,char x); NODE *head; //变量定义 char a='H'; delete1(head,4); printlink(head); insert(head,2,a); printlink(head); return 0; Your company slogan }Βιβλιοθήκη Your company slogan
实验二:二叉排序树的查找
TNODE *create_binary_sort_tree(STU *students) { int i; TNODE *head,*s,*p,*q; STU *t; head=NULL; for(i=0;i<8;i++) { t=students; s=(TNODE*)malloc(sizeof(TNODE)); s->key=(t+i)->number1; s->data=*(t+i); s->lchild=NULL; s->rchild=NULL;
实验一:单链表的插入和删除
void delete1(NODE*head,int i) { NODE*p,*s; int j=0; p=head; while((p->next!=NULL)&&(j<i-1)) { p=p->next; j++; } if((p->next==NULL)||(j>i-1)) printf("i的值不合法\n"); else { s=p->next; p->next=s->next; free(s); } }
}
Your company slogan
实验二:二叉排序树的查找
实验结果
输出结果:
Your company slogan
疑题解答
三 人 行 , 必 有 我 师 焉
Your company slogan
深度优先搜索的递归算法
#define VTXUNM n struct arcnode{ int adjvex; float data; struct arcnode*nextarc; } typedef struct arcnode ARCNODE; struct headnode{ int vexdata; ARCNODE*firstarc; }; struct headnode G[VTXUM+1]; int visited[VTXUNM+1]; :
int main() { //子函数声明 TNODE *create_binary_sort_tree(STU *students); //二叉排序树生成子函数 TNODE *bstsearch(TNODE *root,int k); //二叉排序树查找子函数 void print_out(TNODE *add); //输出子函数
Your company slogan
实验一:单链表的插入和删除
void insert(NODE*head,int i,char x) { NODE*p,*s; int j=0; p=head; while((p!=NULL)&&(j<i-1)) { p=p->next; j++; } if((p==NULL)||(j>i-1)) printf("i值不合法\n"); else { s=(NODE*)malloc(sizeof(NODE)); s->data=x; s->next=p->next; p->next=s; }
Your company slogan
实验一:单链表的插入和删除
void printlink(NODE *head) { NODE *p; p=head->next; int i; printf("该链表内容为:\n"); for(i=1;i<=N;i++) { printf("%c",p->data);