单链表练习与重下AS

1.练习题:

我的代码答案:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head) {
   struct ListNode dummpy;
   struct ListNode* tmp;
   dummpy.next=NULL;//引入临时节点,用头插法,临时节点的next域为NULL
   while(head){
    tmp=head->next;
    head->next=dummpy.next;
    dummpy.next=head;
    head=tmp;
   }
   return dummpy.next;
}

2.对前两天单链表核心操作的一个小调试。
代码:

#pragma once编译一次就ok。
不需要加载其他库。


typedef int Element_t;

//链式存储,定义节点结构
typedef struct _node {
	Element_t val;
	struct _node* next;
}node_t;

//定义链表头结构
typedef struct {
	node_t head;
	int count;
}LinkList_t;


LinkList_t* createLinkList();
int insertLinkListHeader(LinkList_t* link_table, Element_t val);
int insertLinkListPos(LinkList_t* link_table,int pos, Element_t val);
int deleteLinkList(LinkList_t* link_table, Element_t val);
void showLinkList(const LinkList_t *link_table);

包括.h文件和基本文件

#include<stdlib.h>
#include"LinkList.h"



LinkList_t* createLinkList() {
	LinkList_t* table = NULL;
	table=(LinkList_t*)malloc(sizeof(LinkList_t));
	if (table == NULL) {
		return NULL;
	}
	table->count = 0;
	table->head.val = 0;//任意,自行约定
	table->head.next = NULL;
	return table;
}


//头插法,不需要再寻找插入位置的前置节点,带头节点的链表,头节点就是头插法的前置节点
int insertLinkListHeader(LinkList_t* link_table, Element_t val) {
	node_t* p = &link_table->head;
	node_t* new_node = (node_t*)malloc(sizeof(node_t));
	if (new_node == NULL) {
		return -1;
	}
	new_node->val = val;
	new_node->next = p->next;
	p->next = new_node;
	link_table->count++;
	return 0;
}


	//在中间插入
int insertLinkListPos(LinkList_t* link_table, int pos, Element_t val) {
	node_t* p = link_table->head.next;
	for (int i = 0; i < pos-1; i++) {
		p = p->next;
	}
	node_t* tmp = (node_t*)malloc(sizeof(node_t));
	if (tmp == NULL) {
		return -1;
	}
	tmp->val = val;
	tmp->next = p->next;
	p->next = tmp;
	return 0;

}

void showLinkList(const LinkList_t* link_table) {
	//辅助指针指向第一个元素,辅助指针不断向后指,直到遇到NULL
	
	node_t* p = link_table->head.next;//指针类型等于指针类型,不应该多加“&”
	printf("link list: %d\n ", link_table->count);
	while (p) {
		printf("%d\t", p->val);
		p = p->next;
	}

	printf("\n");
}

int deleteLinkList(LinkList_t* link_table, Element_t val) {
	// 辅助指针,指向val这个元素的前置节点
	node_t* p = &link_table->head;
	while (p->next) {
		if (p->next->val == val) {
			break;
		}
		p = p->next;
	}
	if (p->next==NULL) {
		printf("Not find!\n");
		return -1;
	}
	//删除逻辑
	node_t * tmp = p->next;
	p->next = tmp->next;
	free(tmp);
	link_table->count--;
	return 0;
}


编写函数在main中进行测试,也是有.h文件,不需要.c文件。

#include "LinkList.h"

void test01(){
	LinkList_t* table = createLinkList();

	for (int i = 0; i < 10; i++) {
		insertLinkListHeader(table, i + 100);
	}
		showLinkList(table);

		printf("====================\n");
		deleteLinkList(table, 109);
		deleteLinkList(table, 104);
		showLinkList(table);

		printf("********************\n");
		insertLinkListPos(table, 5, 6);
		showLinkList(table);
	
}





int main() {

	test01();
	return 0;
}

在我编写这些代码时,node_t* p = &link_table->head.next;这一行代码出错了,在进行调试后发现。去掉&就行,指针变量p=指针变量next,不需要进行&的取址操作。
3.关于AS重新下载这件事。今天发现自己新建项目之后,项目自带的类出现了报错,显示该类不存在。应该是缺少相应的依赖。加之我之前把AS下到c盘和它的迁盘操作,索性就删除重新下载。

在第一次加载项目时,怎样能更快地build出基本项目?(用镜像网站下载)问题报错如下图。

第一步,找到项目中的gradle-wrapper.properties文件。
把文件中第三行的services.gradle.org/distributions改为mirrors.cloud.tencent.com/gradle
只修改这一部分!

第二步,找到setting.gradle.kts文件。
替换成以下代码:

pluginManagement {
    repositories {
        // 阿里云镜像(覆盖 Maven Central、Google、JCenter 等)
        maven { setUrl("https://maven.aliyun.com/repository/public/") }
        maven { setUrl("https://maven.aliyun.com/repository/google/") }
        maven { setUrl("https://maven.aliyun.com/repository/jcenter/") }
        maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin/") }
        // 华为云镜像
        maven { setUrl("https://repo.huaweicloud.com/repository/maven/") }
        // 腾讯云镜像
        maven { setUrl("https://mirrors.cloud.tencent.com/nexus/repository/maven-public/") }
        // 网易镜像
        maven { setUrl("https://mirrors.163.com/maven/repository/maven-public/") }
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        // 阿里云镜像(覆盖 Maven Central、Google、JCenter 等)
        maven { setUrl("https://maven.aliyun.com/repository/public/") }
        maven { setUrl("https://maven.aliyun.com/repository/google/") }
        maven { setUrl("https://maven.aliyun.com/repository/jcenter/") }
        maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin/") }
        // 华为云镜像
        maven { setUrl("https://repo.huaweicloud.com/repository/maven/") }
        // 腾讯云镜像
        maven { setUrl("https://mirrors.cloud.tencent.com/nexus/repository/maven-public/") }
        // 网易镜像
        maven { setUrl("https://mirrors.163.com/maven/repository/maven-public/") }

        google()
        mavenCentral()
    }
}

rootProject.name = "My Application3"
include(":app")

倒数第二行rootProject.name = "My Application3"这个双引号后面改为自己的项目名字就ok.

还有最后,前两天一直以为自己的AS很卡,最后发现是鼠标没电了。

posted @ 2025-03-15 21:28  f-52Hertz  阅读(7)  评论(0)    收藏  举报