按升序对char数组进行排序(使用Link列表)

时间:2013-09-01 19:57:17

标签: linked-list

我想按升序排列我的链接列表(包含char数组)。该程序应允许用户输入一些名称,然后按升序显示它们。我使用了strncpy函数。没有编译错误。但是输出不是名称,而是给出一些整数(perharps地址)。请帮我!我是C的新手!

#include <stdio.h>
#include <malloc.h>
#include <string.h>

char name [10];


struct node
{
char nm [10];
struct node *next;
}*newnode, *prev, *temp, *display, *current, *list;

void createlist()
{
list=NULL;
};

void insert ()
{
newnode=(struct node*) malloc (sizeof (struct node));

printf("Enter the Name: ");
scanf("%s",&name);
strncpy(newnode->nm,name, 10);
newnode->next=NULL;

if (list==NULL)
{
    list=newnode;
}
else if (name<list->nm)
{
    newnode->next=list;
    list=newnode;
}
else
{
    temp=list;
    int place;
    place=0;

    while (temp!=NULL && place ==0)
    {
        if (name>temp->nm)
        {
            prev=temp;
            temp=temp->next;
        }
        else
        {
            place=1;
        }
        newnode->next=prev->next;
        prev->next=newnode;
    }
}
}

void displayname()
{
if (list==NULL)
    printf("\n\nList is empty");
else
{
    display=list;
    while(display!=NULL)
    {
        printf("%d\n",display->nm);
        display=display->next;
    }
}
 }

 int main()
 {

char choice;
choice=='y';

createlist();
do
{
    insert ();
    printf("Do you want to continue? ");
    scanf("%s",&choice);
}while (choice='y'&& choice!='n');

displayname();
}

1 个答案:

答案 0 :(得分:0)

在显示功能中

printf("%d\n",display->nm);

%d格式化程序将参数输出为整数。使用printf的%s格式化程序来获取字符数组

printf("%s\n",display->nm);

你仍然需要编写排序代码...把输出数字的问题代替文本。