链表的拆分(把相同的元素放在同一个链表里)

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:50:22
例如:
dalian,shenyang,beijing,shanghai,dalian,beijing,dalian,
输出为:
dalian,dalian,dalian,
shenyang,
beijing,beijing,
shanghai
最好用C语言编写,不胜感激!

#include<stdio.h>
#include <string.h>
#define MAX_NUM 100 //最大元素个数

char *city[7] = {"dalian","shanghai","shenyang","beijing","dalian","beijing","dalian"};

typedef struct Data
{
char str[20];
int c;
};

void main()
{
int count = 0;//不同元素个数
int i,j,k;
int flag = 1;
struct Data data[MAX_NUM];

//设置第一个元素
strcpy(data[0].str, city[0]);
data[0].c = 1;
count = 1;

//数组初始化
for(i = 2; i < MAX_NUM; i++)
{
strcpy(data[i].str, "");
data[i].c = 0;
}

//进行比较
for(i = 1; i < 7; i++)
{
flag = 1;
k = count;
for(j = 0; j < k; j++)
{
if (strcmp(data[j].str, city[i]) ==0 )
{
data[j].c++;
flag = 0;
}
}
//如果数组里面没有则添加到数组
if (fl