#include<stdio.h> #include<stdlib.h> #include<string.h> //定义一个存放数据的结构体 typedef struct { int num; char name[20]; }DATA; //定义链表 typedef struct node { DATA data; struct node *next; }NODE,*PNODE; DATA getData();//模拟接受数据 PNODE createNode(DATA data);//创建节点 PNODE insertNode(PNODE head,DATA data);//插入节点 void showAllNode(PNODE head);//显示插入的所有节点 PNODE deleteNode(PNODE head);//删除节点 void freeAllNode(PNODE head);//释放节点 void fun(); int menu(); int main() { PNODE head=NULL;//建立空表 fun(); return 0; } int menu() { //system("clear"); printf( "\n\t单链表系统" "\n\t1)插入链表" "\n\t2)删除链表" "\n\t3)显示链表" "\n\tq)退出" ); printf("\n\t请输入选择:"); char select=getchar(); while((select!=‘\n‘)&& (getchar()==‘\n‘)) { return select; } } void fun() { PNODE head=NULL; int flag=1; while(flag) { switch(menu()){ case ‘1‘:head=insertNode(head,getData());break; case ‘2‘:head=deleteNode(head);break; case ‘3‘:showAllNode(head);break; case ‘q‘:flag=0;break; default: printf("\t输入有错误!\n"); } printf("\n\t回车继续!\n"); getchar(); } freeAllNode(head); head=NULL; } void freeAllNode(PNODE head) { head=NULL; } PNODE deleteNode(PNODE head)//顺序删除节点 { PNODE p=head->next;//备份 free(head);//释放 return p; } void showAllNode(PNODE head)//显示插入的所有节点 { PNODE p=head; printf("\tNum Name\n"); while(p!=NULL) { printf("\t%d %s\n",p->data.num,p->data.name); p=p->next; } } PNODE insertNode(PNODE head,DATA data)//顺序插入节点 { PNODE temp=createNode(getData()); temp->next=head; return temp; } PNODE createNode(DATA data)//创建节点 { PNODE temp =(PNODE)malloc(sizeof(NODE)); temp->data=data; temp->next=NULL; return temp; } DATA getData() { static int n=0; n++; char str[20]={0}; sprintf(str,"test-%d",n); DATA temp={n,""}; //temp.name[0]+=1; strcpy(temp.name,str); return temp; }
运行结果(在VS2010中实现,在Linux下也可以实现):
时间: 2024-12-08 23:29:49