C program study

 

int my_strlen(char* str) {
	int i = 0;
	while (str[i] != '\0') {
		i++;
	}
	return i;
}
char* my_strcat(char* str1, char* str2) {
	int len1 = my_strlen(str1);
	int len2 = my_strlen(str2);
	char* str3 = (char*)malloc((len1 + len2 + 1) * sizeof(char));
	if (!str3) {
		printf("内存分配失败!\n");
		return NULL;
	}
	for (int i = 0; i < len1; i++) {
		str3[i] = str1[i];
	}
	for (int i = 0; i < len2; i++) {
		str3[len1 + i] = str2[i];
	}
	str3[len1 + len2] = '\0';
	return str3;
}
void my_strcpy(char* str1, char* str2) {
	int len = my_strlen(str2);
	for (int i = 0; i < len; i++) {
		str1[i] = str2[i];
	}
	str1[len] = '\0';
}
int my_strcmp(char* str1, char* str2) {
	int len1 = my_strlen(str1);
	int len2 = my_strlen(str2);
	if (len1 != len2) {
		return len1 - len2;
	}
	for (int i = 0; i < len1; i++) {
		if (str1[i] != str2[i]) {
			return str1[i] - str2[i];
		}
	}
	return 0;
}

 

#include<stdio.h>
int fiobo(int n)
{
    if(n==0)
        return 1;
    else if(n==1)
        return 1;
}
int main()
{
    int a;
    scanf("%d", &a);
}
#include <stdio.h>
#define MAX_ROWS 99
int main() {
    unsigned int c[MAX_ROWS][MAX_ROWS];
    int n;
    printf("Enter the number of rows for Pascal's triangle: ");
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        for (int space = 1; space <= n - i; space++) {
            printf("  ");
        }
        for (int j = 0; j <= i; j++) {
            if (j == 0 || j == i)
                c[i][j] = 1;
            else
                c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
            printf("%4d ", c[i][j]);
        }
        printf("\n");
    }
    return 0;
}

 

Definition: A circular doubly linked list is a data structure that consists of a sequence of nodes, where each node contains a value, a reference to the next node, and a reference to the previous node in the sequence. The last node in the list points to the first node, creating a circular structure. Detailed study (explanation): A circular doubly linked list is similar to a doubly linked list, but with the added feature of being circular. This means that the last node in the list points back to the first node, creating a loop. This allows for more efficient traversal of the list in both directions, as well as easier implementation of certain algorithms. Applications: Circular doubly linked lists are useful in situations where a list needs to be traversed in both directions, such as in a music playlist where the user can skip forwards and backwards through songs. They can also be used in certain algorithms, such as the Josephus problem, where a group of people are arranged in a circle and every nth person is eliminated until only one person is left. Operations: Some common operations that can be performed on a circular doubly linked list include: 1. Insertion: Adding a new node to the list at a specific position. 2. Deletion: Removing a node from the list. 3. Traversal: Moving through the list in either direction, starting at a specific node. 4. Search: Finding a specific node in the list based on its value. Program implementation: A circular doubly linked list can be implemented using a Node class that contains the value, a reference to the next node, and a reference to the previous node. The list itself can be represented by a head node that points to the first node in the list. Java/C/C++ source code to perform operation: Here's some Java code that demonstrates how to perform various operations on a circular doubly linked list: ``` public class Node { int value; Node next; Node prev; public Node(int value) { this.value = value; this.next = null; this.prev = null; } } public class CircularDoublyLinkedList { Node head; public CircularDoublyLinkedList() { this.head = null; } public void insert(int value, int position) { Node newNode = new Node(value); if (head == null) { head = newNode; head.next = head; head.prev = head; } else { Node current = head; for (int i = 1; i < position; i++) { current = current.next; } newNode.next = current.next; newNode.prev = current; current.next.prev = newNode; current.next = newNode; } } public void delete(int value) { if (head == null) { return; } Node current = head; do { if (current.value == value) { current.prev.next = current.next; current.next.prev = current.prev; if (current == head) { head = current.next; } return; } current = current.next; } while (current != head); } public void traverseForward() { if (head == null) { return; } Node current = head; do { System.out.print(current.value + " "); current = current.next; } while (current != head); System.out.println(); } public void traverseBackward() { if (head == null) { return; } Node current = head.prev; do { System.out.print(current.value + " "); current = current.prev; } while (current != head.prev); System.out.println(); } public Node search(int value) { if (head == null) { return null; } Node current = head; do { if (current.value == value) { return current; } current = current.next; } while (current != head); return null; } } ``` Output-screenshot: Here's an example of how to use the above code to perform various operations on a circular doubly linked list: ``` CircularDoublyLinkedList list = new CircularDoublyLinkedList(); list.insert(1, 1); list.insert(2, 2); list.insert(3, 3); list.insert(4, 4); list.traverseForward(); // Output: 1 2 3 4 list.traverseBackward(); // Output: 4 3 2 1 list.delete(2); list.traverseForward(); // Output: 1 3 4 Node node = list.search(3); System.out.println(node.value); // Output: 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值