mirror of
				https://git.wolves.top/wolves/leetcode.git
				synced 2025-11-04 17:26:32 +08:00 
			
		
		
		
	init
This commit is contained in:
		
							
								
								
									
										60
									
								
								we/23-2.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								we/23-2.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
struct ListNode {
 | 
			
		||||
    char *val;
 | 
			
		||||
    int count;
 | 
			
		||||
    struct ListNode *next;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct ListNode *initNode(char *val) {
 | 
			
		||||
    struct ListNode *node = (struct ListNode *)malloc(sizeof(struct ListNode));
 | 
			
		||||
    node->val = val;
 | 
			
		||||
    node->next = NULL;
 | 
			
		||||
    return node;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 返回值带头节点
 | 
			
		||||
struct ListNode *process(const char *fileName){
 | 
			
		||||
    struct ListNode *head = initNode("");
 | 
			
		||||
 | 
			
		||||
    FILE *fp = fopen(fileName, "r");
 | 
			
		||||
    if(fp == NULL) {
 | 
			
		||||
        printf("open file failed\n");
 | 
			
		||||
        return head;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    char buffer[1024];
 | 
			
		||||
    char *words[1000];
 | 
			
		||||
    int wordCount = 0;
 | 
			
		||||
 | 
			
		||||
    while (fscanf(fp, "%s", buffer) != EOF && wordCount < 1000) {
 | 
			
		||||
        words[wordCount] = strdup(buffer);  // 使用 strdup 复制字符串
 | 
			
		||||
        wordCount++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int tag = 0; // 0 表示还没有处理,1 表示已经处理
 | 
			
		||||
    
 | 
			
		||||
    for (int i = 0; i < wordCount; i++) {
 | 
			
		||||
        struct ListNode *p = head;
 | 
			
		||||
        tag = 0;
 | 
			
		||||
        while(p->next != NULL) {
 | 
			
		||||
            if(strcmp(p->next->val, words[i]) == 0){
 | 
			
		||||
                p->next->count++;
 | 
			
		||||
                tag = 1;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            p = p->next;
 | 
			
		||||
        }
 | 
			
		||||
        if(tag == 0) {
 | 
			
		||||
            struct ListNode *node = initNode(words[i]);
 | 
			
		||||
            node->count = 1;
 | 
			
		||||
            p->next = node;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fclose(fp);
 | 
			
		||||
    
 | 
			
		||||
    return head;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user