关于单链表的问题
来源:百度知道 编辑:UC知道 时间:2024/09/22 05:45:23
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
typedef struct list_node_t{
char value;
struct list_node_t * next;
} Node, *pNode;
Node * Head = NULL;
int create_list();
void free_list();
void browse_list();
main()
{
printf( "hello world!\n" );
if ( create_list() < 0 ){
printf( "list creation failed!\n" );
}else{
printf( "list created successfully!\n" );
}
browse_list();
free_list();
}
int create_list()
{
Node *p, *q;
int i;
for ( i=0; i<10; i++ ){
p = (Node *)malloc( sizeof(Node) );
if (p == NULL) return -1;
p->value = 'a'+i;
// printf( "Added list node \'%c\'.\n", p->value );
#include <stdio.h>
#include <malloc.h>
typedef struct list_node_t{
char value;
struct list_node_t * next;
} Node, *pNode;
Node * Head = NULL;
int create_list();
void free_list();
void browse_list();
main()
{
printf( "hello world!\n" );
if ( create_list() < 0 ){
printf( "list creation failed!\n" );
}else{
printf( "list created successfully!\n" );
}
browse_list();
free_list();
}
int create_list()
{
Node *p, *q;
int i;
for ( i=0; i<10; i++ ){
p = (Node *)malloc( sizeof(Node) );
if (p == NULL) return -1;
p->value = 'a'+i;
// printf( "Added list node \'%c\'.\n", p->value );
我来给你解答,不过记得给分啊!!我要给我家姑娘起名,要多多的分才好啊~~
1、创建链表,用的是尾插法,链表不带头节点,共插入10个节点,链表最后内容为a,b,c...
释放链表,从头部开始,每次释放头指针指向的节点,直到链表为空
遍历,遍历就简单一些,只要定义一个临时指针,由链表头部开始依次访问就可以了
2、插入void insert_node( int position, char value )
{
Node *p,*q;
int count;
//首先判断要插入的位置是否是队头
if(position==0)
{
p = (Node *)malloc( sizeof(Node) );
p->next = Head->next;
p->value = value;
Head = p;
return;
}
//查找插入位置前的那个节点
p=Head;
count=0;
while((count<position)||(p!= NULL))
{
p = p->next;
count ++;
}
//是否插入位置越界
if(p == NULL)
{
return;
}
//开始插入
q = (Node *)malloc( sizeof(Node) );
q->next = p->next;
q->value = value;
p->next=q;
return;
}
删除和修改和插入类似!参照插入很容易就可以修改出来
对于单向链表。只需要记住一点就可以了,一切从root开始。