Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions 2017-1/tqh/2-12/Header.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
#include<stdio.h>
#include"Header.h"
#include<time.h>
//�����������
void CreateList(LinkList *L,int n)
{
LinkList p = NULL;
int i ;
*L = (LinkList)malloc(sizeof(LNode));
(*L)->next = NULL;
srand((unsigned)time( NULL ) );
for(i=0;i<n;i++){
p = (LinkList)malloc(sizeof(LNode));
/*scanf("%d",&p->data);*/
p->data = rand()%1024;
p->next = (*L)->next;
(*L)->next = p;
}
}//createlist

//��������������
void SortList(LinkList L,int n)
{
int i=0;
int j=0;
LinkList head;
LinkList p1;
LinkList p2;

for(i=0;i<n;i++)
{
head = L->next;
for( j=0;j<n-1;j++)
{
p1=head;
p2=head->next;
if( p1->data > p2->data){
Elemtype temp = p1->data;
p1->data = p2 -> data;
p2->data = temp;
}
head = head->next;
}
}
}

//��������
void Traverse(LinkList L)
{
LNode *p = L->next;
while(p){
printf("%d ",p->data);
p = p->next;
}
}

//�����ϲ���һ��������
void MergeList_L(LinkList La,LinkList Lb,LinkList *Lc)
{
LinkList pa,pb,pc;
pa = La->next;
pb = Lb->next;
*Lc = pc = La;
while(pa&&pb){
if(pa->data <= pb->data){
pc->next = pa;
pc = pa;
pa = pa->next;
}
else{
pc->next = pb;
pc = pb;
pb =pb ->next;
}
}
pc->next = pa? pa:pb;
free(Lb);
}

//���������е�һЩ�����ۺϣ���������
void ShowList(LinkList *L1,LinkList *L2)
{
int i,j;
LinkList Lc;
*L1 =(LinkList) malloc(sizeof(LNode));
*L2 =(LinkList) malloc(sizeof(LNode));

printf("L1��ֵ�ø���:");
scanf("%d",&i);

CreateList(L1,i);
printf("\n����ǰ����L1:\n");
Traverse(*L1);
printf("\n");

SortList(*L1,i);
printf("\n��������L1:\n");
Traverse(*L1);
printf("\n");

printf("\nL2��ֵ�ø���:");
scanf("%d",&j);

CreateList(L2,j);
printf("\n����ǰ����L2:\n");
Traverse(*L2);
printf("\n");

SortList(*L2,j);
printf("\n��������L2:\n");
Traverse(*L2);
printf("\n");

printf("\n�ϲ������:\n");
MergeList_L(*L1,*L2,&Lc);
Traverse(Lc);
}

20 changes: 20 additions & 0 deletions 2017-1/tqh/2-12/Header.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include<stdio.h>
#include<stdlib.h>

#define OK 0
#define ERROR 1
#define OVERFLOW 2

typedef int Elemtype;

typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
//�����ṹ�弰�ṹ��ָ��

void CreateList(LinkList* ,int );
void SortList(LinkList,int);
void Traverse(LinkList );
void MergeList_L(LinkList ,LinkList ,LinkList *);
void ShowList(LinkList *,LinkList *);
12 changes: 12 additions & 0 deletions 2017-1/tqh/2-12/test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include<stdio.h>
#include"Header.h"
#include<stdlib.h>

int main()
{
int i,j;
LinkList L1,L2;
ShowList (&L1,&L2);
return OK;
}

95 changes: 95 additions & 0 deletions 2017-1/tqh/2-13/2-13.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

void CreateList (LinkList *L,int n)
{
LinkList p = (LinkList) malloc(sizeof(LNode));
LinkList temp = p;
srand((unsigned)time( NULL ) );
for(;n!=0;--n){
p->next = (LinkList)malloc(sizeof(LNode));
p->next->data = rand()%1024;
p=p->next;
}
p->next = NULL;
*L = temp->next;
free(temp);
}//createlist

void Traverse1 (LinkList L)
{
LNode *p = L;
while(p) {
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
void Traverse2 (LinkList L)
{
LNode *p = L->next;
do{
printf("%d ",p->data);
p = p->next;
}while(p != L->next);
printf("\n");
}
void SplitList(LinkList L,LinkList*pL1,LinkList*pL2)
{
*pL1=(LNode*)malloc(sizeof(LNode));
(*pL1)->data = 0;
(*pL1)->next = NULL;
*pL2=(LNode*)malloc(sizeof(LNode));
(*pL2)->data = 0;
(*pL2)->next = NULL;
LinkList p,rear1 = *pL1,rear2=*pL2;
int count=0;
for(p = L;p != NULL;p = p->next)
{
++count;
if(count%2)
{
(*pL1)->data++;
rear1->next = p;
rear1 = p;
}
else
{
(*pL2)->data++;
rear2->next = p;
rear2 = p;
}
}
rear1->next = (*pL1)->next;
rear2->next = (*pL2)->next;
}
int main()
{
LinkList L,L1 = NULL,L2 = NULL;
int n;

srand((unsigned)time( NULL ) );
n = rand()%9+2;
printf("���ݵ��ܸ���Ϊ: %d\n",n);
/*scanf("%d",&n);*/
CreateList(&L,n);
printf("����ֵ�����:\n");
Traverse1(L);

SplitList(L,&L1,&L2);
printf("\n��������L1:\n");
Traverse2(L1);
printf("\n��������L2:\n");
Traverse2(L2);
return 0;
}
//�������㷨2-12�޸ĵõ����������ĺ���SplitList
//���������У�ʱ�临�Ӷ�Ӧ��SplitList���������֣��ٲ������ʱ��һ��һ��forѭ���ı�����
//��ʱ�临�Ӷ�ӦΪo��n��
//�ռ临�Ӷ��ں��ĺ�������p1,p2��rear1,rear2��������������
112 changes: 112 additions & 0 deletions 2017-1/tqh/3-2-1/3-2-1.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef int SElemType;
typedef struct _SqStack {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
typedef enum {
false ,
true
}bool;

typedef enum {
OK,
ERROR,
OVERFLOW
} Status;

Status InitStack (SqStack *S);
Status conversion (SqStack *, int , int);
Status Push (SqStack *S, SElemType e);
Status Pop (SqStack *S,SElemType *e);
bool IsStackEmpty (SqStack *S);

Status InitStack (SqStack *S)
{
S->base = (SElemType *)malloc(STACK_INIT_SIZE *
sizeof(SElemType));
if(!S->base) {
return OVERFLOW;
}

S->top = S->base;
S->stacksize = STACK_INIT_SIZE;

return OK;
}//��ʼ��ջ

Status Push (SqStack *S,SElemType e) {
if((S->top-S->base)>=S->stacksize) {
return ERROR;
}
*S->top++ = e;
return OK;
}//��ջ

Status Pop (SqStack *S,SElemType *e)
{
if(IsStackEmpty(S))
{
return ERROR;
}

*e = *--S->top;
return OK;
}//��ջ

bool IsStackEmpty (SqStack *S)
{
if(S) {
return S->base ==S->top;
}
return true;
}//�ж�ջ�Ƿ�Ϊ��

Status conversion (SqStack *S, int input, int d)
{
SElemType e;
if(d > 10) {
return ERROR;
}

while (input)
{
Push(S,input % d);
input = input / d;
}
while (!IsStackEmpty(S))
{
Pop(S,&e);
printf("%d", e);
}
printf("\n\n");
return OK;
}//����ת����ʵ��

int main(int argc,char* argv[])
{
SqStack S;
int input=1348;
int d,i;
srand(time(NULL));
//���������ν���ת��
for(i = 0;i < 5;i ++) {
d = rand ()%8+2;//d��ȡֵӦΪС��10����1������
input = rand()%1024;

printf("���ʮ������Ϊ:%d\n",input);
printf("��Ҫת��Ϊ%d����\n",d);
InitStack(&S);
printf("ת����Ϊ:");
conversion (&S, input, d);
}
return 0;
}

Loading