关于单链表的问题

来源:百度知道 编辑: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 );

我来给你解答,不过记得给分啊!!我要给我家姑娘起名,要多多的分才好啊~~

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开始。