5-10打卡 练习


typedef struct list {
	int data;
	list* next;
}list;

list* initlist()
{
	list* a = new list;
	a->data = 0;
	a->next = NULL;
	return a;
}

void pushback(list** h, int n)
{
    list* a = new list;
    a->data = n;
    a->next = NULL;

    list* p = *h; 
    while (p->next)
    {
        p = p->next;
    }

    p->next = a;
    (*h)->data++;
}


void printlist(list* a)
{
	a = a->next;
	while (a)
	{
		cout << a->data << "   " ;
		a = a->next;
	}
	cout << endl;
}

list* connect(list* a, list* b)
{
	list* head = a;
	list* prev = NULL;
	while (a)
	{
		prev = a;
		a = a->next;
	}
	
	prev->next = b->next;
	head->data += b->data;

	return head;
}
//顺序插入
void insert(int data,list* head)
{
	list* l = new list;
	l->data = data;
	list* index = head->next;
	list* prev = head;
	while (index)
	{
		if (data < index->data)
		{
			prev->next = l;
			l->next = index;
			head->data++;
			return;
		}
		else {
			prev = index;
			index = index->next;
		}
	}
	if (!index)
	{
		prev->next = l;
		l->next = index;
		head->data++;
	}
}

void test01()
{
	list* a = initlist();
	for (int i = 0; i < 5; i++)
	{
		pushback(&a, i);
	}

	list* b = initlist();
	for (int i = 5; i < 10; i++)
	{
		pushback(&b, i);
	}

	list* c = connect(a, b);
	printlist(c);
}

void test02()
{
	list* a = initlist();
	insert(50, a);
	insert(25, a);
	insert(75, a);
	insert(40, a);
	insert(82, a);
	insert(12, a);
	printlist(a);
}

int main()
{
	//test01();
	test02();
	return 0;
}
 
9-9
#include <iostream>
using namespace std;

void insertionSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

int main() {
    int arr[] = { 12, 11, 13, 5, 6 };
    int n = sizeof(arr) / sizeof(arr[0]);

    insertionSort(arr, n);

    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
    return 0;
}
 
9-10
template<typename T>
void xuanze(T a[],int n)
{
	for (int i = 0; i < n; i++)
	{
		int min = i;
		for (int j = i + 1; j < n; j++)
		{
			if (a[j] < a[min])
			{
				min = j;
			}
		}
		if (min != i)
		{
			a[i] = a[i] ^ a[min];
			a[min] = a[i] ^ a[min];
			a[i] = a[i] ^ a[min];
		}
	}
}

int main()
{//					  2
	int data1[] = { 1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20 };
	int i = sizeof(data1) / sizeof(int);
	xuanze<int>(data1,i);
	
	for (i; i > 0; i--)
	{
		cout << data1[i - 1] << " ";
	}
	cout << endl;
	return 0;
}
 
9-14

template<typename T>
void maopao(T arr[],int n) {
	for (int i = n; i > 0; i--)
	{
		for (int j = 1; j < i; j++)
		{
			if (arr[j - 1] > arr[j])
			{
				arr[j - 1] = arr[j] ^ arr[j - 1];
				arr[j] = arr[j] ^ arr[j - 1];
				arr[j - 1] = arr[j] ^ arr[j - 1];
			}
		}
	}
}

int main()
{//					  2
	int data1[] = { 1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20 };
	int i = sizeof(data1) / sizeof(int);
	/*xuanze<int>(data1,i);*/
	maopao<int>(data1, i);
	for (i; i > 0; i--)
	{
		cout << data1[i - 1] << " ";
	}
	cout << endl;
	return 0;
}
 
9-19
template<typename T>
void maopao(T arr[],int n) {
	for (int i = n; i > 0; i--)
	{
		for (int j = 1; j < i; j++)
		{
			if (arr[j - 1] > arr[j])
			{
				arr[j - 1] = arr[j] ^ arr[j - 1];
				arr[j] = arr[j] ^ arr[j - 1];
				arr[j - 1] = arr[j] ^ arr[j - 1];
			}
		}
	}
}

int erfen(int arr[], int n,int target)
{
	int left = 0, right = n - 1;
	int mid = (left + right) / 2;
	while (left < right)
	{
		if (arr[mid] == target)
			return mid;
		else if (arr[mid] > target)
		{
			right = mid - 1;
			mid= (left + right) / 2;
		}
		else {
			left = mid + 1;
			mid = (left + right) / 2;
		}
	}
	if (arr[left] == target)
	{
		return left;
	}
	return -1;
}

int main()
{//					  2
	int data1[] = { 1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20 };
	int i = sizeof(data1) / sizeof(int);
	/*xuanze<int>(data1,i);*/
	maopao<int>(data1, i);
	for (int j=0; j <i; j++)
	{
		cout << data1[j] << " ";
	}

	cout << endl;
	int tar;
	cout << "输入要查找的元素:" << endl;
	while (cin >> tar)
	{
		cout << erfen(data1, i, tar) << endl;
	}

	return 0;
}
 
posted @ 2023-05-10 21:15  aallofitisst  阅读(10)  评论(0)    收藏  举报