博文
[置顶] (原创)数据结构之单链表(2006-05-13 23:08:00)
摘要:数据结构之单链表#include <stdio.h>typedef struct node *linklist;struct node { int data; linklist next; //定义一个链域};
int main(){ char n; linklist head,p; head = 0; //表结点设为空 printf("请输入一串字符,以回车结束!:\n"); scanf("%c",&n);
while(n!='\n'){ p=(linklist)malloc(sizeof(linklist)); //申请内存空间 p->data=n; //输入的字符存放在data域里 p->next=head; //头插法单链表是这样转指针的 head=p; scanf("%c",&n);}printf("你输入的字符串是:\n");p=head; //输出前先让p指回表结点,就象数组回到首地址一样while(p!=NULL) { printf("%c",p->data); p=p->next;} getch(); return 0;}
头插法的单链表,它的输出是倒置数据,这是它的特点哦
尾插法:
#include <stdio.h>#include <string.h>typedefstruct node *linklist;struct node { int data; linklist next;};
length(linklist head) //求表的长度{ linklist p; int j = 0; p = head; while(p->next!=0) //算法思想:当链域next不为空时,说明都存放有数据,则占有空间 { p = p->next; j++; ......
输出26个字母(2006-05-14 00:29:00)
摘要://实现栈类//逆序输出26个字母//2006 05 13#include <iostream.h>#include<string>class Node{public: char data; Node *next;};class Stack:public Node{ Node *Bottom; Node *Top; int SLen;public: void InitStack(); char Pop(); void Push(char e); bool StackEmpty();};void Stack::InitStack(){ Top=new Node; Bottom=Top; SLen=0;}char Stack::Pop(){ char e; Node *p; if(!(Top->next)) exit(0); else { p=Top; &nbs......
快速排序算法(C源码)(2006-05-13 23:33:00)
摘要:快速排序算法(C源码)
#include <stdio.h>#include <stdlib.h>
#define MAXLISTSIZE 100
typedef int ElementType;
//声明函数int partition(ElementType a[], int low, int high);int quicksort(ElementType a[], int low, int high);void output(ElementType a[]);void input(ElementType a[]);
int Listsize;
void main(){
ElementType a[MAXLISTSIZE]; printf("Enter Number\n"); input(a); printf("The primary number.\n"); output(a); printf("Quick sort...\n"); quicksort(a,0,Listsize-1); printf("\nThe Post Number.\n"); output(a);}
int partition(ElementType arr[], int low, int high);{ ElementType p = arr[low]; ElementType temp;
while(low < high){ while(low < high && arr[high] >= p) high--; EXCHAGE(arr[low],arr[high]); while(low < high && arr[low] <= p) low++; EXCHAGE(arr[low],arr[high]);}return low;}
void quicksort(ElementType arr[],int low, int high){ int loc;
if(l......
经典的递归题(2006-04-06 13:10:00)
摘要:问题描述: 一位教授逻辑学的教授有三名非常善于推理且精于心算的学生A,B和C。有一天,教授给他们三人出了一道题:教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个.每个学生都能看见贴在另外两个同学头上的整数,但却看不见自已的数。这时,教授先对学生A发问了:“你能猜出自已的数吗?”A回答:“不能。”教授又转身问学生B:“你能猜出你自已的数吗?”B想了想,也回答:“不能。”教授再问学生C同样的问题,C思考了片刻后,摇了摇头:“不能。”接着,教授又重新问A同样的问题,再问B和C,。经过若干轮的提问之后,当教授再问某人时,此人突然露出得意的笑容,把贴在自已头上的那个数准确无误的报了出来。 现在告诉你,教授在第N次提问时,轮到回答问题的那个人猜出了贴在自已头上的数M,你能推断出另外两个学生的头上的贴的是什么数吗? 提示:总是头上贴着最大的那个数的人最先猜出自已头上的数。/********************************************************************** 文件名: recursion.h* 文件描述: 经典的递归题* 创建人: Angel (QQ:317725224)* 版本号: 1.0* 修改记录:*********************************************************************/
#include <iostream.h>
const int Max=3;
void Init(int a[], int n){ for(int i=1; i<n; i++) a[i]=i+1; a[i]=1;}
int count(int a[], int st......
基础知识-数据结构(2006-04-05 00:57:00)
摘要:递归函数recusrive function 1.直接递归(direct recursion)2.间接递归(indirect recursion)
a.数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 b.据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。c.数据项是数据的不可分割的最小单位。d.数据结构在计算机中的表示(又称映象)称为数据的物理结构,又称存储结构。 它包括数据元素的表示和关系的表示。 有两种不同的存储结构: 顺序存储结构---- 其特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 链式存储结构---- 其特点是借助指示元素存储地址的指针(Pointer)表示数据元素之间的逻辑关系。
数据结构是相互这间存在一种或多种特定关系的数据元素的集合.1.集合2.线性结构3.树形结构4.图状结构或网状结构.
=============================基本操作的实现======================Status InitTripet(Triplet &,ElemType v1,ElemType v2, ElemType v3){ //构造三元组T,依次置T的三个元素的初值为V1,V2和V3.T = (ElemType *)malloc(3*sizeof(ElemType)); //分配3个元素的存储的存储空间.if(!T)exit(OVERFLOW); //分配存储空间失败.T[0] = v1; T[1] = v2; T[2] = v3;return OK;} //InitTripet
Status DestroyTriplet(Triplet &T){ //销毁三元组T free(T); T = NULL; return OK;} // DestroyTriplet
Status Get(Tripl......
数据结构算法(2006-04-03 13:48:00)
摘要:
(转)print算法实现链表的遍历.reverse 算法实现链表的倒置,并让链表的头指针L指向新表的表头。
Source code:
#include "linklist.h"
link l;void Print(link l){ link p; p=l; while (P!=NULL) { visite_snode(P,1); p=p->next; }}
void Reverse(link &L){ link h,u; h=NULL; while(l!=NULL) { u=L; L=L->next; u->next=h; h=u; } l=u;}
void main(){ load_hsllist(l); comput_sllist_card(l,50,100); disp_hsllist("Sllist",l); Print(l); Reverse(l->next); comput_sllist_card(l,50,250); disp_hsllist("Reversed",l);}
......
