链表c语言程序

求一个完整的c语言程序
要求是创建链表,链表赋值(用户输入),输出整个链表数据
链表就输入输出有点不明白
谢谢指教

typedef struct tagLinkList{
int val;
struct tagLinkList *next;
}LinkList,*pLinkList;
void main()
{
LinkList *l,*h;
l=(pLinkList)malloc(sizeof(LinkList));
scanf("%d",&l->val);
h=l;
l=(pLinkList)malloc(sizeof(LinkList));
scanf("%d",&l->val);
h->next=l;
printf("1=%d\n",h->val);
l=h->next;
printf("2=%d\n",l->val);
}闲的无聊,给你写个测试的,只是引导作用,可以参考
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-25
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
char m_name[10];
struct Node* m_prev;
struct Node* m_next;
}node;
node* head=NULL;
node* tail=NULL;
//追加
node* append(){
node* m_t=(node*)malloc(sizeof(node));
printf("请输入追加节点的name:");
scanf("%s",m_t->m_name);
if(head==NULL){
//printf("**********\n");
head=m_t;
tail=m_t;
//printf(" %s\n",head->m_name);
//printf(" %s\n",tail->m_name);
}
else{
tail->m_next=m_t;
m_t->m_prev=tail;
tail=m_t;
}

return head;
}
//打印
void print(){
node* nd;
int i=1;
for(nd=head;nd;nd=nd->m_next){
printf("%d: %s\n",i,nd->m_name);
i++;
}
}
//查询
void find(){
node* nd;
int n;
printf("请输入查找元素的编号:");
scanf("%d",&n);
int i=n;
for(nd=head;nd;nd=nd->m_next){
if(n==1){
printf("%d: %s\n",i,nd->m_name);
break;
}
n--;
}
}
//插入
void insert(){
node* m_t=(node*)malloc(sizeof(node));
node* nd;
int n;
printf("请输入插入元素的name和插入位置:");
scanf("%s%d",m_t->m_name,&n);
for(nd=head;nd;nd=nd->m_next){
if(n==1){
nd->m_next->m_prev=m_t;
m_t->m_next=nd->m_next;
m_t->m_prev=nd;
nd->m_next=m_t;
}
n--;
}

}
//删除
void delet(void){
int n;
node* nd;
printf("请输入删除元素的位置:");
scanf("%d",&n);
for(nd=head;nd;nd=nd->m_next){
if(n==1){
nd->m_prev->m_next=nd->m_next;
nd->m_next->m_prev=nd->m_prev;
free(nd);
}
n--;
}
}

void ui(void){
printf("**********************\n");
printf("1.追加元素\n");
printf("2.插入元素\n");
printf("3.删除元素\n");
printf("4.查询\n");
printf("5.打印\n");
printf("0.退出\n");
printf("**********************\n");
}

int main(void){
int n;
while(1){
ui();
printf("请输入选项:");
scanf("%d",&n);
if(n==0)
break;
switch(n){
case 1:
append();
break;
case 2:
insert();
break;
case 3:
delet();
break;
case 4:
find();
break;
case 5:
print();
break;
default:
printf("输入错误\n");
break;
}
}
}

有追加,打印,查询,插入,删除 节点的功能,没有赋值,你可以看着改改,这是个单链表
相似回答