用C语言实现建立一个单链表的过程,并实现打印链表中每一个元素,写出完整程序

如题所述

这是个很简单的链表创建和输出

#include<stdio.h>

#include<stdlib.h>

typedef struct linkednode

{

char data;

struct linkednode *next;

}node,*link_list;//链表节点的结构及重命名

link_list creat()//创建一个链表返回类型是链表的首地址

{

link_list L;

node *p1,*p2;

char data;

L=(node*)malloc(sizeof(node));//开辟存储空间

p2=L;

while((data=getchar())!='\n')//输入回车键时结束输入

{

p1=(node*)malloc(sizeof(node));

p1->data=data;

p2->next=p1;

p2=p1;

}

p2->next=NULL;

return L;

}

void print(link_list L)//把链表输出

{

node *p;

p=L->next;

while(p!=NULL)

{

printf("%c",p->data);

p=p->next;

}

printf("\n");

}

void main()

{

link_list L=NULL;

char x;

printf("请输入链表节点:\n");

L=creat();

print(L);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-24
这是个很简单的链表创建和输出
#include<stdio.h>
#include<stdlib.h>
typedef struct linkednode
{
char data;
struct linkednode *next;
}node,*link_list;//链表节点的结构及重命名
link_list creat()//创建一个链表返回类型是链表的首地址
{
link_list L;
node *p1,*p2;
char data;
L=(node*)malloc(sizeof(node));//开辟存储空间
p2=L;
while((data=getchar())!='\n')//输入回车键时结束输入
{
p1=(node*)malloc(sizeof(node));
p1->data=data;
p2->next=p1;
p2=p1;
}
p2->next=NULL;
return L;
}
void print(link_list L)//把链表输出
{
node *p;
p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void main()
{
link_list L=NULL;
char x;
printf("请输入链表节点:\n");
L=creat();
print(L);
}
第2个回答  2011-10-24
#include <stdio.h>
#include <malloc.h>
typedef struct tagTable
{
int data;
struct tagTable *next;
} Table_t;

void insert(int nvalue,int ninsert,Table_t *inst)
{
Table_t *ptab=inst;
while(ptab!=NULL)
{
if(ptab->data == nvalue)
{
break;
}
else
ptab = ptab->next;
}
if(ptab == NULL)
{
//not found such a node
}
else
{
Table_t *old=ptab->next;
ptab->next=(Table_t *)malloc(sizeof(Table_t));
ptab->next->data=ninsert;
ptab->next->next=old;
}
}
void append(int nvalue, Table_t *inst)
{
Table_t *ptab=inst;
Table_t *old = NULL;
Table_t *init=inst;
if(inst == NULL)
{
inst=(Table_t *)malloc(sizeof(Table_t));
inst->data=nvalue;
inst->next=NULL;
}
else
{
while(ptab!=NULL)
{
old = ptab;
ptab = ptab->next;
}
//not found such a node
old->next=(Table_t *)malloc(sizeof(Table_t));
old->next->data=nvalue;
old->next->next=NULL;
inst = init;
}
}
void print_table(Table_t *inst)
{
Table_t *ptab=inst;
Table_t *old = NULL;
int i=0;
while(ptab!=NULL)
{
printf("table data[%d]=%d\n",i,ptab->data);
ptab = ptab->next;
i++;
}
}
int get_node_number(Table_t *inst)
{
Table_t *ptab=inst;
Table_t *old = NULL;
int i=0;
while(ptab!=NULL)
{

ptab = ptab->next;
i++;
}
printf("node number=%d\n",i);
return i;
}

void clumsy_sort(Table_t *inst)
{
Table_t *head=inst;
Table_t *ptab;
Table_t *previous;
int nmin=0;
while(head!=NULL)
{
ptab = head;
nmin = head->data;
while(ptab!=NULL)
{
if(nmin>ptab->data)
{
nmin = ptab->data;
}
ptab = ptab->next;
}
ptab = head;
while(ptab!=NULL)
{
if(nmin==ptab->data)
{
ptab->data=head->data;
head->data=nmin;
break;
}
else
{
ptab = ptab->next;
}

}
head = head->next;
}

}
void delete_duplicate(Table_t *L)
{
Table_t *ptmp=L;

while(1)
{
if(ptmp)
{
Table_t *old=ptmp;
ptmp=ptmp->next;
if(ptmp)
{
if(ptmp->data==old->data)
{
old->next=ptmp->next;
delete ptmp;
ptmp=old->next;
}
}
else
{
break;
}
}
else
{
break;
}
}
}
int main()
{
Table_t g;
g.data=0;
g.next=NULL;
append(2,&g);
append(9,&g);
append(2,&g);
append(24,&g);
append(45,&g);
append(6,&g);
print_table(&g);
get_node_number(&g);
insert(3,7,&g);
printf("after inserting\n");
print_table(&g);
get_node_number(&g);
clumsy_sort(&g);
printf("after sorting\n");
print_table(&g);
printf("after deleting\n");
delete_duplicate(&g);
print_table(&g);
}本回答被提问者采纳
相似回答